moteur XSLT - surdéfinition des patrons par défaut


En reprenant l'exemple de la section "sélection de patrons", supposons qui nous voulions obtenir le résultat suivant :
Forme : Il
Forme : était
...
Forme : forêt
Forme : .
Plusieurs solutions sont énumérées ci-dessous :
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>

    <xsl:template match="/">
        <xsl:for-each select="//form">
            Forme : <xsl:value-of select="."/>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>
   Nous définissons un seul patron, qui s'applique à la racine de l'arbre. Nous spécifions, pour cet élément, de générer une ligne "Forme : ..." pour tous les descendants de type form.
Une fois la racine traitée, la transforamation est terminée.
L'instruction for-each sera détaillée plsu tard.
   
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>

    <xsl:template match="couple">
        Forme : <xsl:value-of select="form"/>
    </xsl:template>
</xsl:stylesheet>

   Un patron est défini pour les éléments couple. Pour les éléments situés plus haut dans l'arborescence, les règles par défaut sont appliquées (et ne produisent aucune sortie).
Lorsqu'un élément couple est atteint, une ligne "Forme : ..." est générée et le traitement continue sans s'intéresser aux autres enfants de couple.
   
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="text"/>

    <xsl:template match="lemma">
    </xsl:template>

    <xsl:template match="form">
        Forme : <xsl:value-of select="."/>
    </xsl:template>

</xsl:stylesheet>

   Deux patrons sont définis ici :
  • un patron générant la ligne attendue pour tous les éléments form ;
  • un patron s'appliquant aux éléments lemma produisant une sortie vide. Ce patron surdéfinit (pour cet élément) la règle par défaut s'appliquant aux noeuds de type text.

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