Instruction de choix


On peut choisir un fragment de résultat parmi plusieurs options avec l'instruction choose

<xsl:choose>
  <!-- Content: (xsl:when+, xsl:otherwise?) -->
</xsl:choose> <xsl:when test="boolean-expression">
  <!-- Content: template -->
</xsl:when> <xsl:otherwise>
  <!-- Content: template -->
</xsl:otherwise>

Quand une instruction choose est exécutée, le test de chaque élément fils when est évalué et on applique le template du premier when dont le test retourne true. Le template de l'élément fils otherwise est appliqué si aucun élément when ne s'applique.

Exemple : numérotation des items d'une liste HTML en chiffres arabes, en lettres ou en chiffres romains selon la profondeur d'imbrication

<xsl:template match="orderedlist">
  <ol>
    <xsl:variable name="level"
                  select="count(ancestor::orderedlist) mod 3"/>
    <xsl:choose>
      <xsl:when test='$level=1'>
        <xsl:attribute name="type">i</xsl:attribute>
      </xsl:when>
      <xsl:when test='$level=2'>
        <xsl:attribute name="type">a</xsl:attribute>
      </xsl:when>
      <xsl:otherwise>
        <xsl:attribute name="type">1</xsl:attribute>
      </xsl:otherwise>
    </xsl:choose>
    <xsl:apply-templates/>
  </ol>
</xsl:template>