我在使用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 :(得分: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