powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопрос новичка
4 сообщений из 4, страница 1 из 1
Вопрос новичка
    #37028851
NiceBigMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаю сейчас книгу про XSLT, так там автор рисует ответы без кода, с помощью которого получает это

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<Test id="descendants">
<parent>
<X id="1"/>
<X id="2"/>
<Y id="3">
<X id="3-1"/>
<Y id="3-2"/>
<X id="3-3"/>
</Y>
<X id="4"/>
<Y id="5"/>
<Z id="6"/>
<X id="7"/>
<X id="8"/>
<Y id="9"/>
</parent>
<Test>

(: Отобрать все дочерние элементы с именем X :)
X (: то же, что child::X)
Результат <X id="1"/> <X id="2"/> <X id="4"/> <X id="7"/> <X id="8"/>

Добавил в xml первые две строчки
Код: plaintext
1.
2.
<?xml version="1.0" ?> 
<?xml-stylesheet type="text/xml" href="test.xsl"?> 


Нарисовал test.xsl

Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
child::X
</xsl:stylesheet>

но он вообще ничего не показывает. Что не так?
...
Рейтинг: 0 / 0
Вопрос новичка
    #37028866
NiceBigMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в книге ошибка, конечно же вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<Test id="descendants">
<parent>
<X id="1"/>
<X id="2"/>
<Y id="3">
<X id="3-1"/>
<Y id="3-2"/>
<X id="3-3"/>
</Y>
<X id="4"/>
<Y id="5"/>
<Z id="6"/>
<X id="7"/>
<X id="8"/>
<Y id="9"/>
</parent>
</Test>
...
Рейтинг: 0 / 0
Вопрос новичка
    #37029550
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NiceBigMan,

Скорее всего, ты изучаешь раздел xpath - он, как правило, записывается в select
Твоя задача решается примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:template match="/">
		<xsl:for-each select="Test/parent">
			<xsl:for-each select="child::X">
				<xsl:copy>
					<xsl:apply-templates select="@*"/>
				</xsl:copy>
			</xsl:for-each>
		</xsl:for-each>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:copy-of select="."/>
	</xsl:template>
</xsl:stylesheet>
В этом примере Test/parent - ось, child::X - испытуемый xpath
...
Рейтинг: 0 / 0
Вопрос новичка
    #37029994
NiceBigMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Вопрос новичка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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