2008-09-08 206 views
12

應用模板說我有這個給定的XML文件以相反的順序

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

,我想顯示使用類似的東西

ayx 

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

回答

30

簡單!

<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

您以下可以使用xsl:sort執行此操作。設置data-type =「number」是很重要的,否則,位置將被排序爲一個字符串,結束於此,第10個節點會在第2個節點之前考慮。

<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>