我在xml中有这样的东西:
<doc>
<people>
<adress>
<town>nameoftown</town>
</adress>
</people>
</doc>
我想检查标签城是否包含特定字符串。我知道我可以使用count函数但我想这样做:
XSL:
<ABC>
<xsl:variable name="counter" select="0"/>
<xsl:for-each select="/doc/people/adress/town">
<xsl:if test="contains(text(), 'nameoftown')">
<xsl:variable name="counter" select="$counter+1"/>
</xsl:if>
</xsl:for-each>
<xsl:value-of select="$counter"/>
</ABC>
答案 0 :(得分:2)
XSLT是一种功能语言。
除此之外,这意味着一旦定义(和初始化)的变量无法修改。
变量的不变性并不意味着任何可以通过修改变量以命令式方式/语言解决的问题都无法使用函数式语言来解决。
转向特定问题:您想要以非常复杂的方式进行的操作(7行)可以表示为简单的单行:
count(/*/*/*/town[contains(.,'nameoftown')])
答案 1 :(得分:0)
在XSLT中,空节点集的计算结果为false,因此您只需执行此操作:
<xsl:if test="/doc/people/adress/town[.='nameoftown']">
Found at least one example of nameoftown
</xsl:if>