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

xsl:otherwise, xsl:when

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 selecciona 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 &lt; 10">
         (small)
      </xsl:when>
      <xsl:when test="total &lt; 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