L'élément <xsl:variable> de XSLT

Définition et utilisation

L'élément <xsl:variable> est utilisé pour déclarer une variable locale ou globale.

Remarque :Si elle est déclarée en tant qu'élément de niveau supérieur, la variable est globale, tandis qu'elle est locale si elle est déclarée dans un modèle.

Remarque :Une fois que vous avez défini la valeur d'une variable, vous ne pouvez pas la changer ou la modifier !

Avis :Conseil : Vous pouvez ajouter des valeurs à la variable à l'aide du contenu de l'élément <xsl:variable> ou de l'attribut select !

Syntaxe

<xsl:variable
name="name"
select="expression">
  <!-- Contenu:template -->
</xsl:variable>

Attribut

Attribut Valeur Description
name name Obligatoire. Définir le nom de la variable.
select expression Optionnel. Définir la valeur de la variable.

Exemple

Exemple 1

Si l'attribut select est défini, l'élément <xsl:variable> ne peut pas contenir de contenu. Si l'attribut select contient une chaîne de caractères, cette chaîne doit être encadrée par des guillemets.

Les deux exemples suivants assignent la valeur "red" à la variable "color" :

<xsl:variable name="color" select="'red'" />
<xsl:variable name="color" select='"red"' />

Exemple 2

Si l'élément <xsl:variable> ne contient que l'attribut name et pas de contenu, la valeur de la variable est une chaîne vide :

<xsl:variable name="j" />

Exemple 3

Exemple : l'exemple suivant assigne le contenu de l'élément <xsl:variable> à la variable "header" :

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:variable name="header">
  <tr>
  <th>Element</th>
  <th>Description</th>
  </tr>
</xsl:variable>
<xsl:template match="/">
  <html>
  <body>
  <table>
    <xsl:copy-of select="$header" />
    <xsl:for-each select="reference/record">
    <tr>
    <xsl:if category="XML">
      <td><xsl:value-of select="element"/></td>
      <td><xsl:value-of select="description"/></td>
    </xsl:if>
    </tr>
    </xsl:for-each>
  </table>
  <br />
  <table>
    <xsl:copy-of select="$header" />
    <xsl:for-each select="table/record">
    <tr>
    <xsl:if category="XSL">
      <td><xsl:value-of select="element"/></td>
      <td><xsl:value-of select="description"/></td>
    </xsl:if>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>