Daniel Prado Rodríguez Visita: Sacarse el carnet de conducir por libre DGT
  Viernes, 13 de Diciembre de 2024 Inicio | Contactar
Añadir a favoritos | Imprimir 
  Volver al resto de artículos XSL-XSLT


Programación XSL - XSLT - Etiquetas <xsl:choose>, <xsl:when> y <xsl:otherwise>

» Programacion » XSL-XSLT » Etiquetas <xsl:choose>, <xsl:when> y <xsl:otherwise>
Domingo, 19 de Febrero de 2006. Escrito por Daniel P.


Elemento <xsl:choose>

Si queremos expresar múltiples condiciones contra el contenido de un documento XML deberemos de añadir etiqueta <xsl:choose>.

Veamos su sintaxis:

<xsl:choose>
     <xsl:when test="expression">
        ... alguna salida ...
     </xsl:when>
     <xsl:otherwise>
         ... alguna salida ....
     </xsl:otherwise>
</xsl:choose>


Donde poner la etiqueta condicional <xsl:choose>

Para añadir una condición <xsl:choose> contra el contenido de un documento XML, se debe de añadir también las etiquetas <xsl:when> y la etiqueta <xsl:otherwise>.

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">
          <tr>
          <td><xsl:value-of select="titulo"/></td>
          <xsl:choose>
               <xsl:when test="precio &gt; 8">

               <td bgcolor="#ff00ff">
               <xsl:value-of select="artista"/></td>
               </xsl:when>
               <xsl:otherwise>

               <td><xsl:value-of select="artista"/></td>
               </xsl:otherwise>
          </xsl:choose>

          </tr>
     </xsl:for-each>
     </table>
</body>
</html>
</xsl:template>

</xsl:stylesheet>

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 bgcolor="#ff00ff">Bob Dylan</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>
<tr><td>Unchain my heart</td><td bgcolor="#ff00ff">Joe Cocker</td>
</tr>
</table>
</body></html>


Como se puede observar el código anterior añade un color de fondo rosa a los artistas cuyo precio de venta del CD sea superior a 8.

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

Mi coleccion de CDs

TituloArtista
Empire BurlesqueBob Dylan
The dock of the bayOtis Redding
Picture bookSimply Red
RedThe Communards
Unchain my heartJoe Cocker

Se podría seguir añadiendo etiquetas <xsl:when> por cada nueva condición que queramos añadir.

comentarios (0)
  Anterior artículo XSL-XSLT Siguiente artículo XSL-XSLT 

COMENTARIOS EN FACEBOOK SOBRE: Artículo XSL-XSLT - Etiquetas <xsl:choose>, <xsl:when> y <xsl:otherwise>
 
Mapa web |  Página principal  | Blog de Recetas | Recetas de Pescado | | Política de privacidad | Política de cookies
www.daniel.prado.name - Página Personal - © Copyright