powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / кто-нибудь знает как енто работает??
7 сообщений из 7, страница 1 из 1
кто-нибудь знает как енто работает??
    #33851222
11_22_11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ кто-нибуль может обьяснить такую штуку в MSDN откапал
у меня есть файлик
<t1>
<t2>
</t2>
...
</t1>

и есть шаблон
....
<xsl:template match="t2">
<tr>
<td>
<xsl:apply-templates/>
</td>
</tr>
</xsl:template>
и он при выполнении почему-то себя печатает.. хотя явно я его на печать нигде не вызываю.. Обьясните балбесу как это калдунство работает =)
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33852175
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем понятно
почему-то себя печатает..
1. В выходном документе олучается
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<xsl:template match="t2">
<tr>
<td>
<xsl:apply-templates/>
</td>
</tr>
</xsl:template>
или
2. Получается
Код: plaintext
1.
2.
3.
4.
<tr>
<td>
</td>
</tr>
?
1. Значит как-то неправильно трансформируете (вопрос - как?)
2. Когда мы пишем такой шаблон <xsl:template match="t2">,
значит он будет применяться к элементам с именем t2 (в вашем файле есть
такой элемент) при apply-templates.
Далее в этом шаблоне есть
<tr>
<td>
...
Это называется Элементы буквального результата - т.е. они сразу идут в
результирующее дерево.
Далее <xsl:apply-templates/> - применится ко всем чилдам данного нода
(в нашем случае t2), для которых есть <xsl:template match="...">, где
... - имя дочернего узла
Т.е. для входного
<t2>
</t2>

Мы получим
Код: plaintext
1.
2.
3.
4.
<tr>
<td>
</td>
</tr>
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33853037
11_22_11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beard-electronic
Мы получим
Код: plaintext
1.
2.
3.
4.
<tr>
<td>
</td>
</tr>

в том и дело что кроме разметки после запуска шаблона в тегах <tr></tr> появится содержимое узла t2 из XML файла .. а вот почему(вернее как) происходит печать узла непонятно.. ладно бы если я поставил <xsl:value-of select=".."/>, но ведь я ничего не вызываю явно :'(
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33854280
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каким трансформатором пользуетесь?

И приведите полностью XSLT и XML - посмотрим
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33854514
11_22_11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
beard-electronic
И приведите полностью XSLT и XML - посмотрим
XML FILE
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="applyt.xsl" ?>
<customers>
<customer>
<name>John Smith</name>
<address>123 Oak St.</address>
<state>WA</state>
<phone>(206) 123-4567</phone>
</customer>
<customer>
<name>Zack Zwyker</name>
<address>368 Elm St.</address>
<state>WA</state>
<phone>(206) 423-4537</phone>
</customer>
</customers>
XSL <?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<table border="1" cellspacing="0" cellpadding="2">
<xsl:apply-templates select="customers/customer">
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="customer">
<tr>
<xsl:apply-templates select="phone"/>
</tr>
</xsl:template>
<xsl:template match="phone">
<td>
<xsl:apply-templates/>
</td>
</xsl:template>
</xsl:stylesheet>

а на выходе имеем следующее<html><body><table border="1" cellspacing="0" cellpadding="2"> <tr><td>(206) 123-4567</td>
</tr>
<tr><td>(206) 423-4537</td>
</tr>
</table>
</body></html>
А вопрос все прежний... Почему без явного вызова происходит печать содержимого тега..
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33855441
beard-electronic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
кто-нибудь знает как енто работает??
    #33858814
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
11_22_11
Код: plaintext
1.
2.
3.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
...
</xsl:stylesheet>

А вопрос все прежний... Почему без явного вызова происходит печать содержимого тега..


Код: 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.
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/customers">
	<html>
		<body>
			<xsl:apply-templates select="customer[1]" mode="test-table"/>
		</body>
	</html>
</xsl:template>

<xsl:template match="customer" mode="test-table">
	<table border="1" cellspacing="0" cellpadding="2">
		<xsl:apply-templates select="../customer"/>
	</table>
</xsl:template>

<xsl:template match="customer">
	<tr>
		<td><xsl:value-of select="name"/><td>
		<td><xsl:value-of select="address"/><td>
		<td><xsl:value-of select="state"/><td>
		<td><xsl:value-of select="phone"/><td>
	</tr>
</xsl:template>

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


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