Tutoriel XSLT intermédiaire
XML | |
---|---|
◀▬ | |
⚐ brouillon | ☸ intermédiaire |
⚒ 2016/08/22 |
Introduction
Objectifs:
- Objectifs
- Découvrir et comprendre des fonctions équivalentes à d'autres langages de programmations
- Prérequis
- Suite
- Niveau
- Intermédiaire
- Remarques
Ce tutoriel se veut être la suite du Tutoriel XSLT débutant et s'intéresse à des opérations plus poussées que celles présentes dans ce tutoriel.
Concaténation
Afin d'afficher plusieurs données #PCDATA liées entre elles, il est possible d'utiliser la formule xsl:value-of select="concat()". Il faut néanmoins respecter les règles suivantes :
- La concaténation n'accepte pas les balises "<>", puisqu'elles font partie intégrante du langage xml/xsl
- Le texte supplémentaire est inséré entre guillemets simples (' '), puisqu'entre deux guillemets doubles
- Les différents éléments sont séparés par une virgule
<xsl:template match="date">
<h1>
<xsl:value-of select="concat('Nous sommes le ', jourdelasemaine, ' ', journum, ' ', mois, ' ', an, '.')"/>
</h1>
</xsl:template>
Affichera le message suivant : "Nous sommes le Vendredi 11 mars 2016." (si ce sont les données insérées par l'utilisateur)
Boucle
Afin d'appliquer une règle générale à un ensemble de balises, il est pertinent d'utiliser une boucle xsl:for-each select="".
<xsl:template match="/listes/liste/mots">
<div class="mots">
<h2>Mots et leur définition</h2>
<xsl:for-each select="mot">
<xsl:value-of select="vocable" />
<ul>Etymologie : <xsl:value-of select="etymon"/></ul>
<ul>Définition : <xsl:value-of select="definition"/></ul>
<ul>Synonyme(s) : <xsl:value-of select="synonyme"/></ul>
</xsl:for-each>
</div>
</xsl:template>
Pour chaque mot, il sera affiché le vocable, suivi par son étymologie, sa définition et son synonyme. Pour afficher plusieurs synonymes, à notre niveau, il faudrait tous les mettre dans la même balise, mais ce n'est pas très pratique et cela dénature l'intérêt même de la dtd de référence. La dtd devrait ainsi avoir comme balise une balise qui contient plusieurs synonymes (comme <!ELEMENT synonymes (synonyme+)>) et donc les synonymes, qu'il y en ait qu'un seul ou plusieurs, devraient être appelés par la fonction <xsl:value-of select="synonymes"/>.