我有以下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>
这是未经测试的,可能不正确,但正如您所见,这就是我需要的。
答案 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>