考虑给定的代码:
<xsl:for-each select="$data/row">
<xsl:if test="position() mod 2 = 1" >
<xsl:element name="{current()}" >
<xsl:value-of select="/*next element somehow*/" />
</xsl:element>
</xsl:if>
</xsl:for-each>
当我知道这是我的foreach循环中的偶数元素时,如何获得下一个元素的值?
答案 0 :(得分:2)
执行此操作...
<xsl:value-of select="following-sibling::row[1]" />
请注意,这实际上获得了当前行之后的第一个row
元素,但不必紧挨着。例如,如果您的XML看起来像这样...
<data>
<row>1</row>
<extrarow>1</extrarow>
<row>2</row>
</data>
然后,如果您位于第1行,并执行了上面的语句,它将获得第2行。如果您想获取extrarow
(或紧随当前元素之后的任何元素),请执行此操作
<xsl:value-of select="following-sibling::*[1]" />
请注意,您可以将xsl:for-each
和xsl:if
合并为一个,就像这样:
<xsl:for-each select="$data/row[position() mod 2 = 1]" >
答案 1 :(得分:1)
另一种选择是改为使用位置分组:
<xsl:for-each-group select="$data/row" group-adjacent="(position() - 1) idiv 2">
<xsl:element name="{.}">
<xsl:value-of select="current-group()[2]"/>
</xsl:element>
</xsl:for-each-group>