0

我在xml中有这样的东西:

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

我想检查标签 town 是否包含特定的字符串。我知道我可以使用计数功能,但我想这样做:

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>
4

2 回答 2

2

XSLT 是一种函数式语言

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

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

转向具体问题:您想要以非常复杂的方式(7行)执行的操作可以表示为简单的单行:

count(/*/*/*/town[contains(.,'nameoftown')])
于 2012-12-17T23:49:38.317 回答
0

In XSLT, an empty node set evaluates to false, so you can simply do this:

<xsl:if test="/doc/people/adress/town[.='nameoftown']">
  Found at least one example of nameoftown
</xsl:if>
于 2012-12-17T22:21:37.893 回答