moteur XSLT - Sélection de patrons


Problématique
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.   

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