使用XSLT循环遍历XML标记
我有一个XML,它包含以下内容:使用XSLT循环遍历XML标记,xml,xslt,loops,xpath,Xml,Xslt,Loops,Xpath,我有一个XML,它包含以下内容: <ruletypes> <ruletype>Local</ruletype> <ruletype>Global</ruletype> ... </ruletypes> 地方的 全球的 ... 我想要一个规则类型列表,我尝试了以下方法: <xsl:for-each select="//ruletypes/ruletype"> <li><xsl:val
<ruletypes>
<ruletype>Local</ruletype>
<ruletype>Global</ruletype>
...
</ruletypes>
地方的
全球的
...
我想要一个规则类型列表,我尝试了以下方法:
<xsl:for-each select="//ruletypes/ruletype">
<li><xsl:value-of select="ruletype"/></li>
</xsl:for-each>
但它不起作用按如下方式更改选择:
<xsl:template match="/">
<xsl:for-each select="//ruletypes/ruletype">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
如下更改选择:
<xsl:template match="/">
<xsl:for-each select="//ruletypes/ruletype">
<li><xsl:value-of select="."/></li>
</xsl: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 for elements(在遇到“感兴趣的”节点之前保持处理的移动)和XSLT for text nodes的内置模板,后者通过复制文本来实现。对于每个都避免使用,让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 for elements(在遇到“感兴趣的”节点之前保持处理的移动)和它的内置文本节点模板(通过复制文本)。为了澄清,xsl:for each
将上下文设置为选中的规则类型
元素,因此OP的选择=“ruletype”
在该元素下查找另一个规则类型(没有)。这样,当前规则类型
元素被选中(
)并转换为一个字符串,该字符串将返回节点的文本值。为了澄清这一点,xsl:for each
将上下文设置为所选的ruletype
元素,因此OP的select=“ruletype”
在该元素下查找另一个ruletype
(没有)。这样,将选择当前的规则类型
元素(
)并将其转换为字符串,该字符串将返回节点的文本值。