Fonctionnement des programmes XSL-XSLT

La récursivité

1
<xsl:template match="XPATH-1">
2
    ...
3
    <xsl:apply-templates select="XPATH-2"/>
4
    ...
5
</xsl:template> 
6
<xsl:template match="XPATH-2">
7
    ...
8
    <xsl:apply-templates select="XPATH-3"/>
9
    ...
10
</xsl:template>
11
<xsl:template match="XPATH-3">
12
    ...
13
    <xsl:value-of select="XPATH-4"/>
14
    ...
15
</xsl:template>

Règles par défaut

XSLT comporte trois règles par défaut qui sont appliquées quand aucune règle du programme n'est sélectionnée.

  1. La première règle s'applique à la racine et à tous les éléments et déclenche un appel récursif sur tous les fils du nœud courant :

    <xsl:template match="*|/"> <xsl:apply-templates/> </xsl:template>

  2. La deuxième règle s'applique aux nœuds texte et aux attributs et insère le résultat textuel de ces nœuds dans le document résultat :

    <xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template>

  3. La troisième règle s'applique aux commentaires et aux instructions de traitement et les ignore :

    <xsl:template match="processing-instruction() | comment()" />

ExempleLe programme XSLT minimal

1
<?xml version="1.0" encoding="UTF-8"?> 
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"/>

Attention

Il faut donc prendre garde aux règles par défaut, sources d'effets de bord.

Conseil

Veiller à bien traiter tous les cas.

Méthode

Court-circuiter les règles par défaut, en générant des messages d'erreurs sur la sortie.

ComplémentMode, priorité, règles nommées

  • priority : permet de surcharger les règles de priorité par défaut

  • mode : permet de définir plusieurs règles pour une même prémisse et de choisir explicitement celle que l'on veut au moment de l'appel

  • name : permet de définir des templates nommés, qui sont appelés explicitement (comme des fonctions) par l'instruction <call-template> et non plus seulement par le moteur de récursivité.

ComplémentPriorité entre les règles