Daniel Prado

XSL-XSLT

Elemento apply-templates – Etiqueta <xsl:apply-templates>

La etiqueta <xsl:apply-templates> es usada para aplicar una plantilla (template) sobre el elemento actual o sobre alguno de sus nodos hijos.

Por 4 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:apply-templates>

La etiqueta <xsl:apply-templates> es usada para aplicar una plantilla (template) sobre el elemento actual o sobre alguno de sus nodos hijos.

Una vez que se encuentra la etiqueta <xsl:apply-templates> se buscará alguna de las templates definidas en el documento XSL que coincida con la expresión XPath contenida en su atributo match.

Si añadimos un atributo select a la etiqueta <xsl:apply-templates> esta procesará solo el nodo o nodos hijos que coincidan con el valor del atributo. También podemos usar el atributo select para especificar el orden en el que los nodos hijos serán procesados.

Veamos un ejemplo del uso de 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>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="cd">
<p>
<xsl:apply-templates select="titulo"/>
<xsl:apply-templates select="artista"/>
</p>
</xsl:template>

<xsl:template match="titulo">
Titulo: <span style="color:#ff0000">
<xsl:value-of select="."/></span>
<br />
</xsl:template>

<xsl:template match="artista">
Artista: <span style="color:#00ff00">
<xsl:value-of select="."/></span>
<br/>
</xsl:template>

</xsl:stylesheet>

Nota: El valor del atributo select es una expresión XPath.

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

<?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><p>
Titulo: <span style="color:#ff0000">Empire Burlesque</span><br>
Artista: <span style="color:#00ff00">Bob Dylan</span><br></p><p>
Titulo: <span style="color:#ff0000">The dock of the bay</span><br>
Artista: <span style="color:#00ff00">Otis Redding</span><br></p><p>
Titulo: <span style="color:#ff0000">Picture book</span><br>
Artista: <span style="color:#00ff00">Simply Red</span><br></p><p>
Titulo: <span style="color:#ff0000">Red</span><br>
Artista: <span style="color:#00ff00">The Communards</span><br></p><p>
Titulo: <span style="color:#ff0000">Unchain my heart</span><br>
Artista: <span style="color:#00ff00">Joe Cocker</span><br></p> </body></html>

El resultado de la transformación daría la siguiente salida en el navegador:

Mi coleccion de CDs

Titulo: Empire Burlesque
Artista: Bob Dylan

Titulo: The dock of the bay
Artista: Otis Redding

Titulo: Picture book
Artista: Simply Red

Titulo: Red
Artista: The Communards

Titulo: Unchain my heart
Artista: Joe Cocker

Compartir: WhatsApp Facebook X Correo

Comentarios (1)

  • Diego A.

    Hay algo que no entiendo, cuando llama a como hace para saber que el que tiene que llamar es ??

Deja tu comentario

No lo publicaremos.

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