<xsl:template> |
Définit un modèle de sortie. Pour les modèles situés au début de <xsl:template match="x", le modèle définit une transformation pour un élément donné. Les modèles situés au début de <xsl:template name="x" définissent un ensemble d'éléments de sortie qui sont traités chaque fois que le modèle est invoqué. Tous les éléments <xsl:template> doivent avoir soit l'attribut match, soit l'attribut name de défini. Même si ce cas est rare, il est également possible de créer des éléments <xsl:template> possédant à la fois un attribut match et un attribut name.
Catégorie
Elément de niveau supérieur
Attributs obligatoires
Aucun.
Attributs facultatifs
match Un motif qui définit les éléments pour lesquels ce modèle doit être invoqué. Par exemple, < xsl:template match= " xyz " > définit un modèle pour traiter les éléments < xyz >. name Un attribut qui affecte un nom à ce modèle. Les modèles nommés sont invoqués à l'aide de l'élément < xsl:call-template >. mode Un attribut qui définit un mode pour ce modèle. Un mode correspond à une syntaxe appropriée permettant d'écrire des modèles particuliers à des fins spécifiques. Par exemple, vous pouvez écrire un modèle < xsl:template > avec mode= " toc " pour traiter un nœud de la table des matières d'un document, et un autre modèle < xsl:template > avec mode= " print ", mode= " online ", mode= " index " , etc. pour traiter la même information à des fins différentes. priority Un attribut qui affecte une priorité numérique à ce modèle. La valeur peut correspondre à toute valeur numérique, à l'exception de Infinity. Si le processeur XSLT ne peut pas déterminer le modèle à utiliser (en d'autres termes, plusieurs modèles possèdent la même priorité par défaut), l'attribut priority permet de définir un tiebreaker.
Contenu
Un modèle XSLT.
Apparaît dans
<xsl:stylesheet>. L'élément <xsl:template> est un élément de niveau supérieur qui ne peut apparaître que sous forme d'enfant de l'élément <xsl:stylesheet>.
Défini dans
XSLT section 5.3, Définition des règles de modèle.
Exemple
Le modèle utilisé copie tous les nœuds du document d'entrée dans le document de sortie, à une importante différence près : tous les attributs du document original sont convertis en éléments enfants dans le document de sortie. Le nom de chaque élément généré correspond au nom de l'attribut original, et le texte de chaque élément correspond à la valeur de l'attribut. La feuille de style est la suivante :
    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output method="xml"/>
      <xsl:template match="*">
        <xsl:element name="{name()}">
          <xsl:for-each select="@*">
            <xsl:element name="{name()}">
              <xsl:value-of select="."/>
            </xsl:element>
          </xsl:for-each>
          <xsl:apply-templates select="*|text()"/>
        </xsl:element>
      </xsl:template>
    </xsl:stylesheet>
La feuille de style contient un élément <xsl:template> unique qui transforme chaque nœud dans le document original. La feuille de style est appliquée au document XML suivant pour le transformer :
    <?xml version="1.0"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month sequence="01">
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month sequence="02">
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month sequence="03">
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month sequence="04">
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>
Les résultats de la transformation sont les suivants :
    <?xml version="1.0" encoding="UTF-8"?>
    <report>
      <title>Miles Flown in 2001</title>
      <month><sequence>01</sequence>
        <miles-flown>12379</miles-flown>
        <miles-earned>35215</miles-earned>
      </month>
      <month><sequence>02</sequence>
        <miles-flown>32857</miles-flown>
        <miles-earned>92731</miles-earned>
      </month>
      <month><sequence>03</sequence>
        <miles-flown>19920</miles-flown>
        <miles-earned>76725</miles-earned>
      </month>
      <month><sequence>04</sequence>
        <miles-flown>18903</miles-flown>
        <miles-earned>31781</miles-earned>
      </month>
    </report>