![]() |
![]() |
#1 |
Камрад
Join Date: мар 2001
Location: .spb.ru
Posts: 208
|
![]()
Не совсем понятно, как заставить работать вложенный xsl:for-each. Пример:
XML (t.xml): Code:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="t.xsl"?> <root> <obj> <a>o1a</a> <b>o1b</b> <inn> <i>o1i1</i> <i>o1i2</i> </inn> </obj> <obj> <a>o2a</a> <b>o2b</b> <inn> <i>o2i1</i> <i>o2i2</i> </inn> </obj> </root> Code:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="root/obj"> <xsl:value-of select="a"/> <xsl:value-of select="b"/> <xsl:for-each select="inn"> <xsl:value-of select="i"/> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> o1a o1b o1i1 o1i2 o2a o2b o2i1 o2i2 IE6 показывает: o1a o1b o1i1 o2a o2b o2i1 Получается, что вложенный xsl:for-each выводит только первую ноду. Спрашивается: что я делаю не так? |
![]() |
[Ответить с цитированием] |
![]() |
#2 |
Камрад
Темная личность Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
|
Сомневаюсь, что здесь ответят на подобные вопросы.
![]() |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#3 |
Камрад
Join Date: мар 2001
Location: .spb.ru
Posts: 208
|
Я разве непристойное что-то спросил? Гы-гы :)
Вообще говоря, то, что мне было нужно, я сделал простым apply-templates, но все-таки интересно было бы узнать, почему вложенный цикл не работает... |
![]() |
[Ответить с цитированием] |
![]() |
#4 |
Камрад
Темная личность Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
|
Я бы сказал иначе: ты спросил слишком пристойное.
![]() Тут люди с html-то не могут разобраться, а ты прям сходу с xml и xsl пожаловал. ![]() |
![]() |
Дневник [Ответить с цитированием] |
![]() |
#5 |
Камрад
Join Date: мар 2000
Location: Москва
Posts: 9
|
Вложенным for-each-ем ты перебираешь все элементы <inn>, а не все элементы внутри
<inn>. Правильная XSL-ка будет такой: Code:
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <xsl:for-each select="root/obj"> <xsl:value-of select="a"/> <xsl:value-of select="b"/> <xsl:for-each select="inn/i"> <xsl:value-of select="."/> </xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> |
![]() |
[Ответить с цитированием] |
![]() |
#6 |
Камрад
Join Date: мар 2001
Location: .spb.ru
Posts: 208
|
Спасибо ;)
|
![]() |
[Ответить с цитированием] |
![]() |
Thread Tools | |
Display Modes | |
|
|