Daniel Prado

XSL-XSLT

Elemento Sort– Etiqueta <xsl:sort>

La etiqueta <xsl:sort> es usada para ordenar la salida, se usa dentro de la etiqueta <xsl:for-each>.

Por 3 min de lectura Revisado el 1 comentario

Comprobado: Revisión contextual, no ejecución del código: XSLT 3.0 (W3C) (www.w3.org).

Contexto de este artículo

  • Tecnología y versión: XSLT 1.0 y expresiones XPath de esa generación.
  • Año del artículo: 2006.
  • Estado a 11 de octubre de 2026: Conceptos vigentes; sintaxis histórica. XSLT 3.0 es la referencia posterior: comprueba qué versión admite tu procesador.
  • Documentación de referencia: XSLT 3.0 (W3C).

Conservo a continuación el texto y los ejemplos de aquella fecha como archivo técnico. No he ejecutado estos ejemplos en un entorno actual: esta revisión contextual no garantiza que funcionen hoy.

Elemento <xsl:sort>

La etiqueta <xsl:sort> ordena la salida y se usa dentro de la etiqueta <xsl:for-each>, veamos un ejemplo del uso de esta etiqueta en una plantilla de transformación xsl:

Veamos un ejemplo simple de un archivo xsl que usa esta etiqueta:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h2>Mi coleccion de CDs</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Titulo</th>
<th>Artista</th>
</tr>
<xsl:for-each select="catalogo/cd">
<xsl:sort select="artista"/>
<tr>
<td><xsl:value-of select="titulo"/></td>
<td><xsl:value-of select="artista"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Nota: El atributo select indica que elemento XML va a ser usado para la ordenación.

Dado el siguiente documento XML y la plantilla de transformación anterior:

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalogo>
<cd>
<titulo>Empire Burlesque</titulo>
<artista>Bob Dylan</artista>
<pais>USA</pais>
<discografica>Columbia</discografica>
<precio>10.90</precio>
<anio>1985</anio>
</cd>

<cd>
<titulo>The dock of the bay</titulo>
<artista>Otis Redding</artista>
<pais>USA</pais>
<discografica>Atlantic</discografica>
<precio>7.90</precio>
<anio>1987</anio>
</cd>

<cd>
<titulo>Picture book</titulo>
<artista>Simply Red</artista>
<pais>EU</pais>
<discografica>Elektra</discografica>
<precio>7.20</precio>
<anio>1985</anio>
</cd>

<cd>
<titulo>Red</titulo>
<artista>The Communards</artista>
<pais>UK</pais>
<discografica>London</discografica>
<precio>7.80</precio>
<anio>1987</anio>
</cd>

<cd>
<titulo>Unchain my heart</titulo>
<artista>Joe Cocker</artista>
<pais>USA</pais>
<discografica>EMI</discografica>
<precio>8.20</precio>
<anio>1987</anio>
</cd>
</catalogo>

El resultado sería el siguiente documento HTML:

<html><body>
<h2>Mi coleccion de CDs</h2>
<table border="1">
<tr bgcolor="#9acd32"><th>Titulo</th><th>Artista</th></tr>
<tr><td>Empire Burlesque</td><td>Bob Dylan</td>
</tr>
<tr><td>Unchain my heart</td><td>Joe Cocker</td>
</tr>
<tr><td>The dock of the bay</td><td>Otis Redding</td>
</tr>
<tr><td>Picture book</td><td>Simply Red</td>
</tr>
<tr><td>Red</td><td>The Communards</td>
</tr>
</table>
</body></html>

Vemos que la salida está ordenada por el nombre del artista.

Compartir: WhatsApp Facebook X Correo

Comentarios (1)

  • jose

    hola amigo me queda claro muy bien.... pero necesito ordenar una tabla no por orden alfabetico ni nada yo le tengo que dar el orden como lo hago!!!

Deja tu comentario

No lo publicaremos.

Tu comentario pasará por moderación antes de publicarse. Privacidad.