2010-07-01 4 views
2

У меня возникла проблема с XSLT, чтобы перебрать все строки, а затем все столбцы в каждом элементе строки.XSLT - вложенная петля

Так что, если это XML у меня есть:

<root> 
<subelement> 
<rows> 
<row title="Row1"> 
    <column title="A" /> 
    <column title="B" /> 
</row> 
<row title="Row2"> 
    <column title="C" /> 
    <column title="D" /> 
</row> 
</rows> 
</subelement> 
</root> 

Я хотел бы такой вывод:

<h1>Row1</h1> 
<ul> 
    <li>A</li> 
    <li>B</li> 
</ul> 
<h1>Row2</h1> 
<ul> 
    <li>C</li> 
    <li>D</li> 
</ul> 

С уважением

Питер

+0

Вы хотите что-то. О том, как задать вопросы. Кроме того, большинство людей не любят предоставлять полные решения, не спрашивая об этом, а также задают конкретную проблему. – musiKk

+1

Это выглядит довольно просто, что, собственно, есть проблема, с которой вы сталкиваетесь? –

ответ

2

Это преобразование:

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output omit-xml-declaration="yes" indent="yes"/> 
    <xsl:strip-space elements="*"/> 

<xsl:template match="row"> 
    <h1><xsl:value-of select="@title"/></h1> 
    <ul> 
     <xsl:apply-templates/> 
    </ul> 
</xsl:template> 

<xsl:template match="column"> 
    <li><xsl:value-of select="@title"/></li> 
</xsl:template> 
</xsl:stylesheet> 

при нанесении на предоставленном документе XML:

<root> 
    <subelement> 
     <rows> 
      <row title="Row1"> 
       <column title="A" /> 
       <column title="B" /> 
      </row> 
      <row title="Row2"> 
       <column title="C" /> 
       <column title="D" /> 
      </row> 
     </rows> 
    </subelement> 
</root> 

производит разыскиваемый вывод:

<h1>Row1</h1> 
<ul> 
    <li>A</li> 
    <li>B</li> 
</ul> 
<h1>Row2</h1> 
<ul> 
    <li>C</li> 
    <li>D</li> 
</ul> 
0

Это книга, которую я могу рекомендовать, чтобы узнать XSLT:

XSLT: Справочник программиста, 2-е издание, Michael Kay

Кроме того, этот сайт очень удобен, он даже имеет онлайн XSLT тестер: http://www.w3schools.com/xsl/default.asp

Смежные вопросы