XSLT - 嵌套循环

时间:2010-07-01 12:01:53

标签: xml 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>

此致

彼得

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

这是我可以推荐学习XSLT的书:

XSLT:程序员参考,第2版,Michael Kay

此外,这个网站非常方便,甚至还有一个在线XSLT测试人员:http://www.w3schools.com/xsl/default.asp