使用XSLT循环遍历XML标记

时间:2011-03-30 18:31:26

标签: xml xslt loops xpath

我有一个XML,其中包含以下内容:

<ruletypes>
 <ruletype>Local</ruletype>
 <ruletype>Global</ruletype>
 ...
</ruletypes>

我想要一个规则类型列表,我尝试了以下内容:

<xsl:for-each select="//ruletypes/ruletype">
 <li><xsl:value-of select="ruletype"/></li>
</xsl:for-each>

但它不起作用

2 个答案:

答案 0 :(得分:3)

像这样更改选择:

<xsl:template match="/">
<xsl:for-each select="//ruletypes/ruletype">
      <li><xsl:value-of select="."/></li>
</xsl:for-each>

答案 1 :(得分:3)

Eschew for-each让XSLT处理器完成大部分工作:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="ruletype">
        <li><xsl:apply-templates/></li>
    </xsl:template>
</xsl:stylesheet>

应用于此文档时:

<ruletypes>
   <ruletype>Local</ruletype>
   <ruletype>Global</ruletype>
</ruletypes>

产生以下输出:

<li>Local</li>
<li>Global</li>

请注意,这会利用XSLT的built-in template元素来保持处理移动,直到遇到“有趣”的节点,并使其内置的文本节点模板复制文本。