Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как в xsl взять node из XML? / 3 сообщений из 3, страница 1 из 1
28.05.2009, 15:51
    #36013678
Cepega
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в xsl взять node из XML?
У меня есть xml (из DataSet).
Я успешно создал xsl и вывожу этот xml красиво. Но в некоторых нодах этого xml есть тег
<ThisSettings>.
Внутри него лежит следующий XML:

<settings>
<setting name=tt1>name1</setting>
<setting name=tt2>name2</setting>
</setting>

Как мне поправить xsl чтобы если есть настройка tt2 (setting name=tt2), то писался бы текст "ОК"?
Т.е. я не знаю как в xsl пробежаться по вложенному XML...
Заранее спасибо!
...
Рейтинг: 0 / 0
28.05.2009, 20:39
    #36014421
jfm06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в xsl взять node из XML?
Обратите внимание, атрибуты должны быть в кавычках.

Если представить входящий документ таким:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<root>
	<ThisSettings>
		<settings>
			<setting name="tt1">name1</setting>
			<setting name="tt2">name2</setting>
		</settings>
		<settings>
			<setting name="tt1">name1</setting>
		</settings>		
		<settings>
			<setting name="tt1">name1</setting>
			<setting name="tt2">name2</setting>
		</settings>			
	</ThisSettings>
</root>

Есть разные способы пробежаться по документу, например, сработает такой:
Код: 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.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="4.0"/>
	<xsl:template match="/">
		<html>
			<head>
				<title>Тест</title>
			</head>
			<body>
 				<xsl:apply-templates select="root/ThisSettings/settings"/>
			</body>
		</html>
	</xsl:template>
	
	<xsl:template match="root/ThisSettings/settings">
			<xsl:choose> 
				<xsl:when test="setting/@name = 'tt2'"> 
					<xsl:text>OK</xsl:text><BR />
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>Error</xsl:text><BR />
				</xsl:otherwise>				
			</xsl:choose> 	
	</xsl:template>
	
</xsl:stylesheet>

Вывод:
Код: plaintext
1.
2.
OK
Error
OK
...
Рейтинг: 0 / 0
28.05.2009, 20:59
    #36014444
Cepega
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в xsl взять node из XML?
jfm06, Спасибо большое!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / как в xsl взять node из XML? / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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