我希望XSLT以递增的顺序(例如1,2,3,4,5等)找到元素的位置,但是我的xslt生成的位置为1,2,4,5,8。
XML
<tags>
<tag>
<display>Yes</display>
<data>position<data>
</tag>
<tag>
<display>Yes</display>
<data>position<data>
</tag>
<tag>
<display>No</display>
<data>position<data>
</tag>
<tag>
<display>No</display>
<data>position<data>
</tag>
<tag>
<display>Yes</display>
<data>position<data>
</tag>
</tags>
XSLT
<xsl:for-each select="tags/tag">
<xsl:if test="display[contains(text(),'Yes')]">
<xsl:value-of select="data"/> - <xsl:value-of select="position()"/>
</xsl:if>
</xsl:for-each>
预期输出:
我希望我的位置显示为:
position - 1
position - 2
position - 3
实际输出:
position - 1
position - 2
position - 5
答案 0 :(得分:0)
get_updates
将基于您最初在position()
中选择的标签,并且您要选择全部5个标签。
相反,您可以在xsl:for-each
中将if条件添加为条件,以便仅选择所需的3,这样位置将根据需要为1、2、3。
xsl:for-each
或者,您可以将<xsl:for-each select="tags/tag[display[contains(text(),'Yes')]]">
<xsl:value-of select="data"/> - <xsl:value-of select="position()"/>
<xsl:text> </xsl:text>
</xsl:for-each>
简化为此。...
xsl:for-each