XSLT : premier exemple


Considérons le document XML suivant (sortie d'un étiqueteur)
<?xml version="1.0" encoding="iso-8859-1"?>
<doc>
    <taggersent>
        <taggertoken wordform="Il" lemma="il" pos="PRO"/>
        <taggertoken wordform="était" lemma="être" pos="VER:sg"/>
        <taggertoken wordform="une" lemma="un" pos="DET:femi:sg"/>
        <taggertoken wordform="fois" lemma="fois" pos="NOM:femi:sg"/>
        <taggertoken wordform="," lemma="," pos="PUN"/>
        <taggertoken wordform="les" lemma="le" pos="DET:masc:pl"/>
        <taggertoken wordform="voleurs" lemma="voleur" pos="NOM:masc:pl"/>
        <taggertoken wordform="étaient" lemma="étayer|être" pos="VER:pl"/>
        <taggertoken wordform="dans" lemma="dans" pos="PRP"/>
        <taggertoken wordform="la" lemma="le" pos="DET:femi:sg"/>
        <taggertoken wordform="forêt" lemma="forêt" pos="NOM:femi:sg"/>
        <taggertoken wordform="." lemma="." pos="PUN"/>
    </taggersent>
</doc>
Supposons que nous souhaitions créer un nouveau document XML contenant les couples (wordform, lemma) trouvées dans ce document.
Document XSLT Sortie
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="/">
    <couples>
        <descr>Liste des couples forme-lemme</descr>
        <xsl:apply-templates/>
    </couples>
</xsl:template>

<xsl:template match="taggertoken">
    <couple>
        <form>
            <xsl:value-of select="@wordform"/>
        </form>
        <lemma>
            <xsl:value-of select="@lemma"/>
        </lemma>
    </couple>
</xsl:template>

</xsl:stylesheet>
  
<couples>
    <descr>Liste des couples forme-lemme</descr>
    <couple><form>Il</form><lemma>il</lemma></couple>
    <couple><form>était</form><lemma>être</lemma></couple>
    <couple><form>une</form><lemma>un</lemma></couple>
    <couple><form>fois</form><lemma>fois</lemma></couple>
    <couple><form>,</form><lemma>,</lemma></couple>
    <couple><form>les</form><lemma>le</lemma></couple>
    <couple><form>voleurs</form><lemma>voleur</lemma></couple>
    <couple><form>étaient</form><lemma>étayer|être</lemma></couple>
    <couple><form>dans</form><lemma>dans</lemma></couple>
    <couple><form>la</form><lemma>le</lemma></couple>
    <couple><form>forêt</form><lemma>forêt</lemma></couple>
    <couple><form>.</form><lemma>.</lemma></couple>
</couples>
dans l'exemple ci-contre, les parties en gras sont des éléments XSLT, les parties vertes sont des expressions XPath et le reste représente des éléments XML à générer en sortie.

Cet exemple nous permet de découvrir un élément central d'XSLT : xsl:template. Sa syntaxe est la suivante :
<xsl:template match="expression XPath">
    sortie correspondante
</xsl:template>
[ page sur xsl:template... ]

Le deuxième template s'applique à tous les éléments taggertoken et spécifie qu'il faut générer en sortie, pour chacun d'eux , un élément couple. Chaque élément couple a deux enfants, form et lemma, dont les valeurs respectives dépendent des atttibuts de l'élément taggersent. Notez au passage la syntaxe de l'expression :
<xsl:value-of select="expression XPath"/>
L'expression XPath contenue dans select est ici relative au noeud courant, à savoir taggertoken.
[ page sur xsl:value-of... ]

Le premier template s'applique à l'élément racine du document source et spécifie qu'il faut générer pour cet élément un élément couples.
<xsl:apply-templates/> est une instruction spécifiant qu'il faut appliquer les autres patrons qui concordent pour les enfants de l'élément courant.
[ page sur xsl:apply-template... ]
Nous allons voir dans la suite comment le processeur XSLT génère la sortie à partie du document XML et de la feuille XSLT : quelles règles de transformation sont appliquées ? Dans quel ordre ? Sur quels éléments ?

Précédent... ] Sommaire... ] Suivant... ]