2009-05-13 7 views
1

Ich schreibe eine Transformation für eine Reihe von Knoten, ähnlich zu diesem.XSLT Reverse Vorlage Bestellung über Anwendung Vorlagen oder Call-Vorlage?

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

Das Ergebnis erzeugt er ist von oben nach unten (rekursiv):

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

Das Problem wird, nachdem er das Ergebnis erzeugt, ich brauche es in der richtigen Reihenfolge zu sein:

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

Ich habe keine Ideen, wie ich das nach der Rekursion anwenden kann? Soll ich eine andere Vorlage verwenden und Anwendungsvorlagen implementieren oder gibt es eine andere Möglichkeit, die Bestellung umzukehren?

Antwort

1

Was passiert, wenn Sie den rekursiven Aufruf vor dem Do-Zeug hinzufügen?

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

Sie sollten die umgekehrte Reihenfolge erhalten.

+0

Danke, :) es scheint, dass der Trick, hätte nie daran gedacht, das zu versuchen, macht es Sinn ohne Sinn: D – Andrew

0

Um die Rekursion zu verstehen, müssen Sie zunächst die Rekursion verstehen.

+0

Um iterieren ist in Ordnung, zu rekrutieren ist göttlich. –

Verwandte Themen