powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xslt - count(distinct) - как?
5 сообщений из 5, страница 1 из 1
xslt - count(distinct) - как?
    #37910575
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть xml примерно такой структуры
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<servers>
	<server name = "server1">
		<jobs>
			<job error="true"/>
		</jobs>
	</server>
	<server name = "server2">
		<jobs>
			<job/>
		</jobs>
	</server>
	<server name = "server3">
		<jobs>
			<job error="true"/>
		</jobs>
		<disks>
			<disk error="true"/>
		</disks>
	</server>
</servers>



что нужно сделать: посчитать количество узлов <server>, у которых у любого потомка есть аттрибут error со значением true
в данном случае должны быть посчитаны server1 и server3
есть xslt файл с таким выражение
Код: xml
1.
<xsl:value-of select = "count(/servers/server//*[@error='true'])" />


Однако это выражение считает все узлы, у который установлен аттрибут error='true', в результате получается count=3

откуда вопрос - как таки посчитать именно сервера, а не все узлы с аттрибутом? глубина вложенности детей, количество, наименования и т.д. могут быть совершенно произвольными и неограниченными



-------------------------
There’s no silver bullet!
...
Рейтинг: 0 / 0
xslt - count(distinct) - как?
    #37910790
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скобки не там

/servers/[server//@error='true']
...
Рейтинг: 0 / 0
xslt - count(distinct) - как?
    #37910801
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернее так:

/servers[server//@error='true']
...
Рейтинг: 0 / 0
xslt - count(distinct) - как?
    #37910809
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вернее:

/servers/server[*//@error='true']
...
Рейтинг: 0 / 0
xslt - count(distinct) - как?
    #37910831
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСкобки не там

/servers/[server//@error='true']
О, спасибо

немножко не так, но направление мне стало понятным
в результате получилось вот так:

Код: xml
1.
2.
		
<xsl:value-of select = "count(/servers/server[.//@error='true'])" />
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xslt - count(distinct) - как?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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