我有一个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>
但它不起作用
答案 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元素来保持处理移动,直到遇到“有趣”的节点,并使其内置的文本节点模板复制文本。