Reprenons l'exemple précédent :
<?xml
version="1.0" encoding="iso-8859-1"?>
<couples>
<couple><form>Il</form><lemma>il</lemma></couple>
<couple><form>était</form><lemma>être</lemma></couple>
...
<couple><form>forêt</form><lemma>forêt</lemma></couple>
<couple><form>.</form><lemma>.</lemma></couple>
</couples>
Supposons que nous voulions ne sélectionner que les formes des
tokens. On pourrait penser à une solution du type :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="form">
Forme :
<xsl:value-of select="."/>
</xsl:template>
</xsl:stylesheet>
Cette feuille XSLT définit un patron pour tous les éléments
form et spécifie qu'il faut générer
en sortie pour chaque élément correspondant une ligne
"Forme : "
suivie de la valeur de l'élément. La sortie produite est
la suivante :
Forme : Ilil
Forme : étaitêtre
Forme : forêtforêt
Forme : ..
Ce résultat peut surprendre. Nous trouvons ici la sortie produite
par application du template que nous avons défini plus haut, mais
notons également la présence des lemmes.
Dans le détail...
1 - Au début de la transformation, le moteur considère
la racine du document, puis l'élément racine. Aucun
patron ne correspondant, une règle
par défaut est appliquée. Pour un noeud non textuel,
qui n'est ni commentaire, ni instruction de traitement, la règle
est de poursuivre la transformation pour chaque élément
fils. |
|
|
2 - Le moteur considère alors le premier élément
fils de l'élément couples.
L'élément courant est alors :
|
| Aucun patron n'étant défini pour cet élément,
c'est la même règle par défaut qui est
appliquée (transformation de chaque élément
fils) |
|
|
|
3 - Le moteur considère alors le premier élément
fils de l'élément couple.
L'élément courant est alors :
|
| Un patron défini dans le document XSLT correspond
à cet élément, il est alors appliqué.
Le patron stipule qu'il faut générer la chaîne
"Forme : ",
puis la valeur de l'élément courant (en l'occurence
sa valeur textuelle, ici : "Il"). |
|
|
|
4 - Ci-contre, la partie grisée représente les éléments
pour lesquels la transformation est terminée. La transformation
se poursuit alors en appliquant la règle définie au
point 2.
L'élément considéré est alors le deuxième
fils du premier élément couple.
|
| Aucun patron n'étant défini, la règle
par défaut est de considérer les éléments
fils. Ici, un seul élément, de type text :
La règle par défaut pour un élément
de ce type est de générer la valeur du texte
correspondant en sortie. Ce qui explique le résultat
de la transormation Forme : Ilil. |
|
|
|
5 - À ce stade, la totalité du premier élément
couple est achevée, la
transformation se poursuit en appliquant la règle définie
au point 1, i.e. en considérant
le deuxième élément fils de l'élément
racine couples. |
|
|