2009-05-13 5 views
1

私はこのようなノードのセットのための変換を書いています。XSLT apply-templatesまたはcall-templateを使用してテンプレートの順序を入れ替えますか?

<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 1--> 
<!--do stuff 2--> 
<!--do stuff 3--> 
<!--do stuff 4--> 
<!--do stuff 5--> 

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

それが結果を生成した後に問題がある、私はそれが正しい順序であることが必要

私は再帰後にこれをどのように使うべきかについてのアイデアはありませんか?別のテンプレートを使用してapply-templatesを実装すべきか、別の方法でその順序を逆にすることができますか?

答えて

1

do stuffの前に再帰呼び出しを追加するとどうなりますか?

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

逆の順序になります。

+0

ありがとう、それはトリックをやったようだが、それを試したことがないと思うだろう、それは理にかなっていない意味がある:D – Andrew

0

再帰を理解するには、まず再帰を理解する必要があります。

+0

反復するには、反復するのは神聖である。 –

関連する問題