xsl:for-each 循环,根据索引使用 xsl:if

use*_*251 2 xml xslt

例如,我想根据 xsl:for-each 循环中的索引编写一些逻辑。

<xsl:for-each select="address">
  <if index is 0>
      <EPAPARTMENT1> <xsl:value-of select="value" /> </EPAPARTMENT1>
  <if>
  <if index is 1>
      <EPDEPARTMENT2> <xsl:value-of select="value" /> </EPDEPARTMENT2>
  <if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

请解释一下,如何在 xsl:for-each 循环中获取索引值以及如何将其与 xsl:if 一起使用

谢谢。

Mar*_*ert 5

当您迭代节点集时,您可以使用该position()函数返回节点集中的当前索引。请注意,此索引是从 1 开始的。所以在你的情况下,你会写这样的东西:

<xsl:for-each select="address">
  <xsl:if test="position() = 1">
    <EPAPARTMENT1> <xsl:value-of select="value" /> </EPAPARTMENT1>
  </xsl:if>
  <xsl:if test="position() = 2">
    <EPDEPARTMENT2> <xsl:value-of select="value" /> </EPDEPARTMENT2>
  </xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)