给定一个使用 unique-values() 函数返回不同状态列表的变量,是否有一种方法可以在 for-each 循环中标记该变量?
<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
以下变量返回 AL 和 NM,但我无法使用 for-each 对其进行迭代。有没有解决的办法?
<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
<xsl:for-each select="$FormStates">
XSLT 2.0 好。
The distinct-values()
函数返回一个您应该能够迭代的值序列。结果可以说是“标记化”的。
fn:distinct-values('AL', 'AL', 'NL')
返回序列('AL', 'NL')
.
如果你输出变量xsl:value-of
它只会返回字符串“AL NL”,因为默认的序列分隔符xsl:value-of
是单个空格字符。这是你可以改变的事情@separator
属性:
Input
<?xml version="1.0" encoding="UTF-8"?>
<States>
<State>AL</State>
<State>AL</State>
<State>NM</State>
</States>
XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="/">
<xsl:variable name="FormStates" select="distinct-values(States/State)"/>
<xsl:comment>xsl:value-of</xsl:comment>
<xsl:value-of select="$FormStates" separator=":"/>
<xsl:comment>xsl:for-each</xsl:comment>
<xsl:for-each select="$FormStates">
<xsl:value-of select="."/>
<xsl:text>:</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Output
<?xml version="1.0" encoding="UTF-8"?>
<!--xsl:value-of-->
AL:NM
<!--xsl:for-each-->
AL:NM:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)