L'élément <xsl:template> permet de définir une règle de modèle, c'est-à-dire, par l'intermédiaire de la valeur de l'attribut match, des éléments seront prêts pour l'application de règles de style.

<xsl:template match="pattern">
   ...
</xsl:template>

Il suffira ensuite d'utiliser l'élément <xsl:apply-templates> en son sein, afin d'effectuer la mise en forme des éléments ciblés.

<xsl:template match="pattern">
   ...
   <xsl:apply-templates select="cible"/>
   ...
</xsl:template>

Par ailleurs, si un mode est indiqué dans <xsl:apply-template>, alors seuls les éléments correspondants à la fois au pattern du template et à ce mode, subiront une mise en forme.

<xsl:template match="pattern">
   ...
   <xsl:apply-templates mode="nom"/>
   ...
</xsl:template>

Enfin, l'élément <xsl:value-of> utilisé dans une règle de modèle permet de récupérer les valeurs des éléments ciblés ou de leurs attributs.

<xsl:template match="pattern">
   ...
   <xsl:value-of select="expression"/>
   ...
</xsl:template>

Si l'attribut name est utilisé dans le template, ce-dernier se comportera comme une fonction.

<xsl:template name="nom">
   ...
</xsl:template>

La fonction générée est appelée explicitement par son nom avec l'élément <xsl:call-template>.

<xsl:template name="nom_template">
   ...
</xsl:template>
<xsl:template match="pattern">
   ...
   <xsl:call-template name="nom_template"/>
   ...
</xsl:template>

Outre les règles de style contenues dans le template appelé, des paramètres peuvent également être passés par l'intermédiaire des éléments <xsl:param> dans la fonction template et <xsl:with-param> dans <xsl:call-template>.

<xsl:template name="nom_template">
   <xsl:param name="nom_paramètre">
   Valeur
   </xsl:param>
   ...
</xsl:template>
<xsl:template match="pattern">
   ...
   <xsl:call-template name="nom_template">
   <xsl:with-param name="nom_paramètre">
      Nouvelle valeur
   <xsl:/with-param>
   </xsl:call-template>
   ...
</xsl:template>
Les attributs :
Attribut Description
match="pattern" traite les noeuds sélectionnés par le pattern spécifié, au lieu de traiter tous les éléments.
name="nom" traite les noeuds sélectionnés par le pattern spécifié, au lieu de traiter tous les éléments.
priority="niveau" applique les templates avec un mode donné.
mode="mode" applique les templates avec un mode donné.

Cet élément ne peut être contenu que dans les instructions <xsl:stylesheet> et <xsl:transform>.

L'élément <xsl:template> accepte en son sein les éléments suivants :

Exemple : [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" 
                        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" 
               media-type="text/html; charset=ISO-8859-1"/>
  <xsl:template match="/">
  <html>
      <head>
        <title>La logithèque</title>
      </head>
      <body>
        <table border="0" width="60%" class="produit">
        <tr>
          <th>Logiciel</th>
          <th>Editeur</th>
        </tr>
        <xsl:apply-templates select="logitheque/categorie/logiciel"/>
        </table>
      </body>
  </html>
  </xsl:template>
  <xsl:template match="logitheque/categorie/logiciel">
  <tr>
      <td>
          <a href="{editeur/@lien}" target="_blank" 
                style="font-size:10pt; font-weight:bold">
            <xsl:apply-templates select="nom"/>
          </a>
          - <xsl:apply-templates select="commentaire"/>
      </td>
      <td>
        <a href="{editeur/@lien}" target="_blank">
        <xsl:apply-templates select="editeur"/>
        </a>
      </td>
  </tr>
  </xsl:template>
</xsl:stylesheet>
En savoir plus :
Découvrez cet élément sur le site du W3CDécouvrez cet élément sur le site de Microsoft