xml - variable - Cómo hacer un XSL: para cada uno en orden inverso
xslt (3)
Estoy buscando invertir en XSL / FO un bucle para cada uno.
por ejemplo el xml
<data>
<record id="1"/>
<record id="2"/>
<record id="3"/>
<record id="4"/>
<record id="5"/>
<record id="6"/>
</data>
con el xsl
<xsl:for-each select="descendant-or-self::*/record">
<xsl:value-of select="@id"/>
</xsl:for-each>
Estoy buscando la salida 654321 y no 123456
¿Cómo es esto posible?
Sí, Alexander tiene razón, olvidó el tipo de datos, sin embargo:
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="@id" order="descending" data-type="number" />
<xsl:value-of select="@id"/>
</xsl:for-each>
(sin eso, se encontrará con problemas de clasificación con números de más de 9)
Use xsl:sort no para ordenar por @id
sino para ordenar por position()
:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/data">
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="position()" data-type="number" order="descending"/>
<xsl:value-of select="@id"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
xsl:sort es tu amigo;
<xsl:for-each select="descendant-or-self::*/record">
<xsl:sort select="@id" order="descending" />
<xsl:value-of select="@id"/>
</xsl:for-each>