2012-12-17 214 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')]) 
相關問題