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>
23/27 |