Share via


Élément <xsl:choose>

Teste plusieurs conditions en combinaison avec les éléments <xsl:otherwise> et <xsl:when>.

<xsl:choose>
</xsl:choose>

Informations sur les éléments

Nombre d'occurrences

Illimité

Éléments parents

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, éléments de sortie

Éléments enfants

xsl:otherwise, xsl:when

Notes

Les enfants <xsl:when> de l'élément <xsl:choose> sont testés, dans l'ordre de haut en bas, jusqu'à ce qu'un attribut test d'un de ces éléments décrive avec exactitude des conditions dans les données sources, ou jusqu'à ce qu'un élément <xsl:otherwise> soit atteint. Une fois qu'un élément <xsl:when> ou <xsl:otherwise> est choisi, la logique quitte le bloc <xsl:choose>. Il n'est pas nécessaire d'avoir une instruction de sortie explicite.

Pour un simple test conditionnel, utilisez l'élément <xsl:if>.

Exemple

L'exemple suivant illustre un modèle pour les éléments <order> et insère un indicateur de taille avant le contenu de chaque <order>. Cet indicateur de taille se base sur la valeur de l'élément <total> contenu dans chaque élément <order>. Si le total est inférieur à 10, le texte « (small) » est ajouté. Si le total est inférieur à 20, le texte « (medium) » est ajouté. Si le total est supérieur ou égal à 20, le texte « (large) » est ajouté.

Fichier 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>

Fichier 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>

Sortie

(small) 9

(medium) 19

(large) 29