2008-09-08 8 views
12

dire que j'ai ce fichier xml donnéapply-templates dans l'ordre inverse

<root> 
    <node>x</node> 
    <node>y</node> 
    <node>a</node> 
</root> 

et je veux les éléments suivants à afficher

ayx 

en utilisant quelque chose de similaire à

<xsl:template match="/"> 
    <xsl:apply-templates select="root/node"/> 
</xsl:template> 
<xsl:template match="node"> 
    <xsl:value-of select="."/> 
</xsl:template> 

Répondre

30

Facile!

<xsl:template match="/"> 
    <xsl:apply-templates select="root/node"> 
     <xsl:sort select="position()" data-type="number" order="descending"/> 
    </xsl:apply-templates> 
</xsl:template> 

<xsl:template match="node"> 
    <xsl:value-of select="."/> 
</xsl:template> 
3

Vous peut le faire, en utilisant xsl: trier. Il est important de paramétrer le data-type = "number" car sinon, la position sera triée en tant que chaîne, à la fin, le 10ème nœud sera considéré avant le 2nd.

<xsl:template match="/"> 
    <xsl:apply-templates select="root/node"> 
     <xsl:sort 
      select="position()" 
      order="descending" 
      data-type="number"/> 
    </xsl:apply-templates> 
</xsl:template> 
<xsl:template match="node"> 
    <xsl:value-of select="."/> 
</xsl:template>