2012-12-17 73 views
0

我在XML是这样的:如何检查标签是否包含特定的字符串?

<doc> 
    <people> 
    <adress> 
     <town>nameoftown</town> 
    </adress> 
    </people> 
</doc> 

我要检查标签镇含有特定字符串。我知道我可以使用计数功能,但我想这样做了这种方式:

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

所以,你需要算'包含'nameoftown'的城镇? –

+0

是(10个以上的字符) – keid

+0

为什么你不想使用'count'函数? –

回答

0

在XSLT,空节点集计算为false,那么你可以简单地这样做:

<xsl:if test="/doc/people/adress/town[.='nameoftown']"> 
    Found at least one example of nameoftown 
</xsl:if> 
2

XSLT是功能语言

此外,这意味着一个变量,一旦定义(和初始化)不能被修改。

变量的不变性并不意味着任何问题都可以用函数式语言来解决,这个问题可以通过修改变量来以命令式的方式/语言来解决。

转向具体问题:你想在一个非常复杂的方式做(7线)什么可以表示为一个简单的一行:

count(/*/*/*/town[contains(.,'nameoftown')]) 
相关问题