识别XSLT中的第一个循环运行

Hen*_*rik 24 xslt foreach functional-programming

我是XSLT的新手,可能从错误的角度看待我的问题 - 来自C++和Java等语言.我希望有人可以帮助我.

我想在XSLT中进行循环调用(xsl:for-each)并在第一次循环运行时执行特定的操作.在其他语言中,我会为此使用状态变量,但变量不能像我所知的那样在XSLT中更改它们的值,那么我该如何解决这个问题呢?这就是我想要做的.if子句中的大写部分当然是假的,代表了我的问题.

<xsl:for-each select="browser/value">
 <xsl:if test="FIRST TIME IN LOOP">
  do something once
 </xsl:if>

 <xsl:value-of select="current()" />
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

非常感谢!亨里克

Mar*_*tin 40

我认为最简单的方法是检查当前节点的位置.它也比检查树中先前元素的存在更快(如果xsl:sort添加到循环中,它仍然有效):

<xsl:for-each select="browser/value">
  <xsl:if test="position()=1">
    do something here
  </xsl:if>
  <xsl:value-of select="blah"/>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)