XSLT通过apply-templates或call-template反转模板顺序?

时间:2009-05-13 20:39:38

标签: xml xslt reverse

我正在为一组节点编写变换,类似于此。

  <xsl:template match="/" name="nav">
        <!--do stuff-->
      <xsl:if test="notEnd">
       <xsl:call-template name="nav"></xsl:call-template>
      </xsl:if>
  </xsl:template>

它生成的结果是自上而下(递归):

<!--do stuff 5-->
<!--do stuff 4-->
<!--do stuff 3-->
<!--do stuff 2-->
<!--do stuff 1-->

问题是在它生成结果之后,我需要它以正确的顺序:

<!--do stuff 1-->
<!--do stuff 2-->
<!--do stuff 3-->
<!--do stuff 4-->
<!--do stuff 5-->

我不知道如何在递归之后求助于此?我应该使用另一个模板并实现apply-templates,还是有另一种方法可以撤销订单?

2 个答案:

答案 0 :(得分:1)

如果你在做东西之前添加递归调用怎么办?

  <xsl:template match="/" name="nav">
      <xsl:if test="notEnd">
       <xsl:call-template name="nav"></xsl:call-template>
      </xsl:if>
      <!--do stuff-->
  </xsl:template>

你应该得到相反的顺序。

答案 1 :(得分:0)

要理解递归,首先必须了解递归。