xslt - when - aplicar plantillas en orden inverso
xslt template (2)
¡Fácil!
<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>
decir que tengo este archivo xml
<root>
<node>x</node>
<node>y</node>
<node>a</node>
</root>
y quiero que se muestre lo siguiente
ayx
usando algo similar a
<xsl:template match="/">
<xsl:apply-templates select="root/node"/>
</xsl:template>
<xsl:template match="node">
<xsl:value-of select="."/>
</xsl:template>
Puedes hacer esto, usando xsl: sort. Es importante establecer el tipo de datos = "número" porque de lo contrario, la posición se ordenará como una cadena, y al final, el 10º nodo se considerará antes del 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>