Kamrad.ru

Go Back   Kamrad.ru > Авторские форумы > Веб-дизайн, вёрстка и веб-программирование

Reply
 
Thread Tools Display Modes
Old 03-02-2003, 21:43   #1
CHaSE
Камрад
 
Join Date: мар 2001
Location: .spb.ru
Posts: 208
Question Вложенный xsl:for-each

Не совсем понятно, как заставить работать вложенный 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>
XSL (t.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">
            <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 выводит только первую ноду. Спрашивается: что я делаю не так?
CHaSE is offline   [Ответить с цитированием]
Old 05-02-2003, 04:33   #2
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
Сомневаюсь, что здесь ответят на подобные вопросы.
Dark is offline   Дневник [Ответить с цитированием]
Old 05-02-2003, 18:03   #3
CHaSE
Камрад
 
Join Date: мар 2001
Location: .spb.ru
Posts: 208
Я разве непристойное что-то спросил? Гы-гы :)

Вообще говоря, то, что мне было нужно, я сделал простым apply-templates, но все-таки интересно было бы узнать, почему вложенный цикл не работает...
CHaSE is offline   [Ответить с цитированием]
Old 06-02-2003, 05:25   #4
Dark
Камрад
Темная личность
 
Join Date: авг 2000
Location: Северная столица aka Санкт - Петербург
Posts: 1,422
Я бы сказал иначе: ты спросил слишком пристойное.
Тут люди с html-то не могут разобраться, а ты прям сходу с xml и xsl пожаловал.
Dark is offline   Дневник [Ответить с цитированием]
Old 19-02-2003, 18:49   #5
MACTEP
Камрад
 
MACTEP's Avatar
 
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>
MACTEP is offline   [Ответить с цитированием]
Old 19-02-2003, 18:55   #6
CHaSE
Камрад
 
Join Date: мар 2001
Location: .spb.ru
Posts: 208
Спасибо ;)
CHaSE is offline   [Ответить с цитированием]
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +3. The time now is 12:21.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Любое использование материалов сайта
возможно только с разрешения его администрации.