Conditions
Lorsque l'on formule des conditions dans XSLT, deux éléments sont disponibles: l'élément <xsl:if> et l'élément <xsl:choose>.
<xsl:if>
On peut fixer des conditions grâce à l'élément <xsl:if>. Celui-ci dispose d'un attribut test obligatoire, qui exige une examination du pattern en tant que valeur. Dans XSLT, il n'y a pas de lien entre IF et ELSE, comme on le retrouve dans d'autres langages de programmation. Jetons un coup d'oeil sur l'exemple suivant.
La feuille de style:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" version="1.0"/>
<xsl:template match="recueilPoemes">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="auteur">
<br/>
<h4>
<xsl:apply-templates/>
</h4>
</xsl:template>
<xsl:template match="prenom">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="nomFamille">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="titre">
<h2>
<xsl:apply-templates/>
</h2>
</xsl:template>
<xsl:template match="strophe">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="vers">
<xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="poeme">
<br/>
<xsl:if test="@langue='el'">Le poème est en langue grec.</xsl:if> (1)
<xsl:if test="@langue='en'">Le poème est en langue anglaise.</xsl:if>
<xsl:if test="@langue='de'">Le poème est en langue allemande.</xsl:if>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
(1) Comme vous pouvez le constater, le contenu de l'élément <xsl:if> est exécuté lorsque le pattern dans l'attribut test trouve une correspondance dans le document source.
Vue du browser du document cible:
Exercice 4
Réécrivez la feuille de style de telle manière que seuls les poèmes grecs s'affichent.
> > à la solution du exercice 4
<xsl:choose>
L'élément <xsl:choose>, avec ses éléments enfants <xsl:when> et <xsl:otherwise>, correspond au "switch-case-construct" dans d'autres langages de programmation.
Cette construction permet d'indiquer plusieurs alternatives, ainsi qu'une valeur qui sera utilisée à la place des alternatives lorsque celles-ci ne sont pas concordantes. La construction doit être introduite par l'élément <xsl:choose>. L'élément peut contenir beaucoup d'éléments enfant <xsl:when> ou très exactement un élément <xsl:otherwise>. Les éléments <xsl:when>, tout comme l'élément <xsl:if> possèdent un attribut obligatoire test. Lorsque le pattern correspond, alors ici aussi, le contenu de l'élément est copié dans l'arbre de résultat. La principale différence entre l'élément <xsl:if> et la construction <xsl:choose>/<xsl:when> consiste en la possibilité d'utiliser l'élément <xsl:otherwise> qui entre en action, lorsqu'aucun élément <xsl:when> ne s'applique.
La feuille de style:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" version="1.0"/>
<xsl:template match="recueilPoemes">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="auteur">
<br/>
<h4>
<xsl:apply-templates/>
</h4>
</xsl:template>
<xsl:template match="prenom">
<xsl:apply-templates/>
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="nomFamille">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="titre">
<h2>
<xsl:apply-templates/>
</h2>
</xsl:template>
<xsl:template match="strophe">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="vers">
<xsl:apply-templates/>
<br/>
</xsl:template>
<xsl:template match="poeme">
<br/>
<xsl:choose> (1)
<xsl:when test="@langue='el'">Le poème est en langue grec.</xsl:when>
<xsl:when test="@langue='en'">Le poème est en langue anglaise.</xsl:when> (2)
<xsl:otherwise>Le poème est en langue allemande.</xsl:otherwise> (3)
</xsl:choose>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
(1) L'élément <xsl:choose> entoure la construction. Les éléments <xsl:when> et <xsl:otherwise> ne sont autorisés qu'en tant qu'éléments enfant de l'élément <xsl:choose>.
(2) L'élément <xsl:when> est exécuté, lorsque le pattern s'applique dans l'attribut test. Dans ce cas, on verifie si le contenu du noeud courant – c'est-à-dire @langue – obtient la valeur „en“. Lorsque la valeur et le pattern correspondent, alors le texte "Le poème est en langue anglaise." sera émis.
(3) On utilise l'élément <xsl:otherwise> lorsqu'aucun des éléments <xsl:when> ne correspond.
<< précédent | suivant >> |
Copyright © dpunkt.verlag GmbH 2004
Vous pouvez imprimer cette version en ligne pour un usage privé. Par ailleurs, ce chapitre du livre "XSL-FO in der Praxis" est soumis aux mêmes clauses prévues pour la version papier: L'intégralité de l'œuvre est protégée par les droits d'auteurs. Tous droits réservés y compris la copie, la traduction, la reproduction sur microfilm, tout comme l'enregistrement et le traitement dans des systèmes électroniques.
dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, téléphone +49 (0)6221-14830, fax +49 (0)6221-148399, hallo(at)dpunkt.de