<xsl:choose> |
L'élément <xsl:choose> représente la version XSLT de l'instruction switch ou case figurant dans de nombreux langages de programmation procédurale.
Catégorie
Instruction
Attributs obligatoires
Aucun.
Attributs facultatifs
Aucun.
Contenu
Contient un ou plusieurs éléments <xsl:when> et peut contenir un élément <xsl:otherwise> unique. Tout élément <xsl:otherwise> doit correspondre au dernier élément dans <xsl:choose>.
Apparaît dans
<xsl:choose> apparaît dans un modèle.
Défini dans
XSLT section 9.2, Traitement conditionnel avec xsl:choose.
Exemple
L'exemple suivant utilise <xsl:choose> pour sélectionner la couleur d'arrière-plan des lignes d'une table HTML. On itère sur quatre valeurs différentes et <xsl:choose> est utilisé pour déterminer la valeur de l'attribut bgcolor dans le document HTML généré. Le document XML utilisé est le suivant :
    <?xml version="1.0"?>
    <list xml:lang="en">
      <title>Albums I've bought recently:</title>
      <listitem>The Sacred Art of Dub</listitem>
      <listitem>Only the Poor Man Feel It</listitem>
      <listitem>Excitable Boy</listitem>
      <listitem xml:lang="sw">Aki Special</listitem>
      <listitem xml:lang="en-gb">Combat Rock</listitem>
      <listitem xml:lang="zu">Talking Timbuktu</listitem>
      <listitem xml:lang="jz">The Birth of the Cool</listitem>
    </list>
La feuille de style est la suivante :
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:output method="html"/>

      <xsl:template match="/">
        <html>
          <head>
            <title>
              <xsl:value-of select="list/title"/>
            </title>
          </head>
          <body>
            <h1><xsl:value-of select="list/title"/></h1>
            <table border="1">
              <xsl:for-each select="list/listitem">
                <tr>
                  <td>
                    <xsl:attribute name="bgcolor">
                      <xsl:choose>
                        <xsl:when test="position() mod 4 = 0">
                          <xsl:text>papayawhip</xsl:text>
                        </xsl:when>
                        <xsl:when test="position() mod 4 = 1">
                          <xsl:text>mintcream</xsl:text>
                        </xsl:when>
                        <xsl:when test="position() mod 4 = 2">
                          <xsl:text>lavender</xsl:text>
                        </xsl:when>
                        <xsl:otherwise>
                          <xsl:text>whitesmoke</xsl:text>
                        </xsl:otherwise>
                      </xsl:choose>
                    </xsl:attribute>
                    <xsl:value-of select="."/>
                  </td>
                </tr>
              </xsl:for-each>
            </table>
          </body>
        </html>
      </xsl:template>

    </xsl:stylesheet>
<xsl:choose> permet de déterminer la couleur d'arrière-plan de chaque élément <td> généré. Le document HTML généré itérant sur les différentes couleurs d'arrière-plan est le suivant :
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Albums I've bought recently:</title>
    </head>
    <body>
    <h1>Albums I've bought recently:</h1>
    <table border="1">
    <tr>
    <td bgcolor="mintcream">The Sacred Art of Dub</td>
    </tr>
    <tr>
    <td bgcolor="lavender">Only the Poor Man Feel It</td>
    </tr>
    <tr>
    <td bgcolor="whitesmoke">Excitable Boy</td>
    </tr>
    <tr>
    <td bgcolor="papayawhip">Aki Special</td>
    </tr>
    <tr>
    <td bgcolor="mintcream">Combat Rock</td>
    </tr>
    <tr>
    <td bgcolor="lavender">Talking Timbuktu</td>
    </tr>
    <tr>
    <td bgcolor="whitesmoke">The Birth of the Cool</td>
    </tr>
    </table>
    </body>
    </html>
Une fois affiché, le document HTML ressemble à laFigure A-5. Document itérant sur différentes couleurs d'arrière-plan