元素的位置必须按升序排列

时间:2019-04-12 11:15:48

标签: xslt

我希望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

1 个答案:

答案 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>&#10;</xsl:text> </xsl:for-each> 简化为此。...

xsl:for-each