xsl获取foreach

时间:2015-11-07 14:09:04

标签: xml xslt

我有以下XSL:

<xsl:for-each select="/*/hundreds/hundred">
<div class="statistics">
    <div class="statistic1">
        <h2><xsl:value-of select="./label"/></h2>
    </div>
    <div class="statistic2">
        <h2><xsl:value-of select="./label"/></h2>
    </div>
</div>
</xsl:for-each>

目前我为current positioned输出了both divs标签。我需要的是the div statistics2输出下一个循环元素标签。

这样的事情:

<xsl:for-each select="/*/hundreds/hundred">
<xsl:variable name="pos2" select="/*/hundreds/hundred[position=position()+1]/>
<div class="statistics">
    <div class="statistic1">
        <h2><xsl:value-of select="./label"/></h2>
    </div>
    <xsl:if test="$pos2/label != NULL">
    <div class="statistic2">
        <h2><xsl:value-of select="$pos2/label"/></h2>
    </div>
    </xsl:if>
</div>
</xsl:for-each>

这是未经测试的,可能不正确,但正如您所见,这就是我需要的。

1 个答案:

答案 0 :(得分:0)

下一个hundred元素称为以下兄弟,因此使用XPath可以使用following-sibling::hundred[1]及其label子项使用following-sibling::hundred[1]/label找到它。请注意,这是输入树中的纯XPath导航,它与for-each无关。

因此,使用XSLT,您可以编写

<xsl:if test="following-sibling::hundred[1]">
  <div class="statistics2"> 
    <h2><xsl:value-of select="following-sibling::hundred[1]/label"/></h2>
  </div>
</xsl:if>