19 de Febrero de 2006 (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 > 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 CDsTitulo | Artista |
---|
Empire Burlesque | Bob Dylan | The dock of the bay | Otis Redding | Picture book | Simply Red | Red | The Communards | Unchain my heart | Joe Cocker |
Se podría seguir añadiendo etiquetas <xsl:when> por cada nueva condición que queramos añadir. |