Elemento <xsl:choose>
Prueba varias condiciones al combinarse con los elementos <xsl:otherwise> y <xsl:when>.
<xsl:choose>
</xsl:choose>
Información del elemento
Número de apariciones |
Ilimitado |
Elementos primarios |
xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, elementos resultantes |
Elementos secundarios |
Comentarios
Se prueban los elementos secundarios <xsl:when> del elemento <xsl:choose>, en orden descendente, hasta que un atributo test en uno de estos elementos describe de manera precisa las condiciones de los datos de origen, o hasta que se alcanza un elemento <xsl:otherwise>.Una vez que se elige un elemento <xsl:when> o <xsl:otherwise>, se abandona el bloque <xsl:choose>.No es necesario un salto explícito o una instrucción de salida.
Para realizar una comprobación condicional sencilla, utilice el elemento <xsl:if>.
Ejemplo
En el siguiente ejemplo se muestra una plantilla para elementos <order> y se inserta un indicador de tamaño delante del contenido de cada <order>.Este indicador de tamaño se basa en el valor del elemento <total> dentro de cada elemento <order>.Si el total es inferior a 10, se agrega el texto "(small)".Si el total es inferior a 20, se agrega el texto "(medium)".Si el total es superior a 20, se agrega el texto "(large)".
Archivo XML (order.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="refchoose.xsl" ?>
<orders>
<order>
<lineitem/>
<lineitem/>
<total>9</total>
</order>
<order>
<lineitem/>
<lineitem/>
<total>19</total>
</order>
<order>
<lineitem/>
<lineitem/>
<total>29</total>
</order>
</orders>
Archivo XSLT (refchoose.xsl)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="order">
<xsl:choose>
<xsl:when test="total < 10">
(small)
</xsl:when>
<xsl:when test="total < 20">
(medium)
</xsl:when>
<xsl:otherwise>
(large)
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
<BR/>
</xsl:template>
</xsl:stylesheet>
Resultados
(small) 9
(medium) 19
(large) 29