powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML + XSL
6 сообщений из 6, страница 1 из 1
XML + XSL
    #34921389
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такой хмл:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>
<row>
<prm1>aaa</prm1>
<prm2> 25 </prm2>
<prm3> 47 </prm3>
<prm4> 1 </prm4>
</row>
<row>
<prm1>aaa</prm1>
<prm2> 34 </prm2>
<prm3> 58 </prm3>
<prm4> 1 </prm4>
</row>
<row>
<prm1>bbb</prm1>
<prm2> 55 </prm2>
<prm3> 77 </prm3>
<prm4> 1 </prm4>
</row> 

</root>
и к нему xsl:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:template match="root">
		<html>
			<table border='2' bordercolor = "black">
				<xsl:apply-templates select='row'/>
			</table>
		</html>
	</xsl:template>
	
	<xsl:template match="row">
		<tr>
			<xsl:apply-templates select='*'/>
		</tr>
	</xsl:template>

	<xsl:template match="*">

		<xsl:variable name='rowCount'>
			<xsl:value-of select="count(following::*[.=current()])"/>
		</xsl:variable>
		
		<xsl:variable name='rowCountPreceding'>
			<xsl:value-of select="count(preceding::*[.=current()])"/>
		</xsl:variable>
		
		<xsl:if test='$rowCountPreceding=0'>
			<td>
				<xsl:if test="$rowCount > 0">
					<xsl:attribute name='rowspan'>
						<xsl:value-of select="$rowCount+1"/>
					</xsl:attribute>
				</xsl:if>
				<xsl:value-of select="."/>
			</td>
		</xsl:if>
	</xsl:template>
 </xsl:stylesheet>
в результате выполнения получается что если встретились
<prm1>aaa</prm1> и <prm1>aaa</prm1> в другом ноде то объединились в результате мне так и нада как сделать чтоб это объединение не происходило в других нодах, ибо в примере еще объединяет prm4...
...
Рейтинг: 0 / 0
XML + XSL
    #34922005
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Струдом со слов понимается что именно сделать надо..
Лучше приводить пример кода какой есть , какой надо, а какой не надо.
По словесному описанию следует примерно следующий вывод.
Необходимо написать условие при котором следует объединять значения нода , а при каком нет.
Условие может быть разным. Может быть по имени ноды, может быть по значению.
Дальнейшие разъеснения будут токо после предаставления кода
...
Рейтинг: 0 / 0
XML + XSL
    #34922254
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обьединять нужно только значения первого нода prm1 все остальные ноды должны отображаться без обьединения...
немного не получается объяснить...
прикреленный файлы - как ненужно
...
Рейтинг: 0 / 0
XML + XSL
    #34922258
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот так нужно:
...
Рейтинг: 0 / 0
XML + XSL
    #34922496
ZanZibArgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.jenitennison.com/xslt/grouping/muenchian.html
...
Рейтинг: 0 / 0
XML + XSL
    #34922911
Фотография sashka304
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо всем кто откликнулся
я тупой гамадрил :) всего-то нда было написать вместо звездочки имя поля
нада было не та писать:
Код: plaintext
<xsl:value-of select="count(following::*[.=current()])"/>
а так:
Код: plaintext
<xsl:value-of select="count(following::prm1[.=current()])"/>

какая-то трудная среда выдалась...
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML + XSL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]