applicare i modelli in ordine inverso
Domanda
diciamo che ho questo file xml indicato
<root>
<node>x</node>
<node>y</node>
<node>a</node>
</root>
e voglio che venga visualizzato quanto segue
ayx
usando qualcosa di simile a
<xsl:template match="/">
<xsl:apply-templates select="root/node"/>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Soluzione
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>
Altri suggerimenti
Puoi farlo usando xsl:sort.È importante impostare data-type="number" perché altrimenti la posizione verrà ordinata come una stringa, quindi il decimo nodo verrebbe considerato prima del secondo.
<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>
<xsl:template match="/">
<xsl:apply-templates select="root/node[3]"/>
<xsl:apply-templates select="root/node[2]"/>
<xsl:apply-templates select="root/node[1]"/>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow