Daniel Prado

XSL-XSLT

Elemento If– Etiqueta <xsl:if>

La etiqueta <xsl:if> es usada para introducir una orden condicional en el tratamiento del documento XML.

Por 3 min de lectura Revisado el

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:if>

Para introducir una orden condicional en el tratamiento del documento XML se debe de introducir en el documento XSL la etiqueta <xsl:if>:

Veamos su sintaxis:

<xsl:if test="expresión">
     ...
     ... Se pone la salida que se quiere ver si la expresión es verdadera
     ...
</xsl:if>

Donde poner la etiqueta <xsl:if>

Para añadir una condición, se debe de añadir dentro de la etiqueta <xsl:for-each> dentro del archivo 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:if test="precio &gt; 8">
<tr>
<td><xsl:value-of select="titulo"/></td>
<td><xsl:value-of select="artista"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

Nota: El valor contenido en el atributo test contiene la expresión que será evaluada.

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>
<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>
</table>
</body></html>

Como se puede observar sólo serán mostrados aquellos artistas cuyo precio de CD sea superior a 8.

Compartir: WhatsApp Facebook X Correo

Comentarios

Aún no hay comentarios. ¡Sé el primero!

Deja tu comentario

No lo publicaremos.

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