Elemento <xsl:variable> di XSLT

Definizione e utilizzo

L'elemento <xsl:variable> viene utilizzato per dichiarare variabili locali o globali.

Commento:Se dichiarato come elemento principale, la variabile è globale, mentre se dichiarato all'interno di un template, la variabile è locale.

Commento:Una volta impostato il valore della variabile, non è possibile modificare o cambiare il valore!

Suggerimento:Puoi aggiungere un valore alla variabile tramite il contenuto dell'elemento <xsl:variable> o tramite l'attributo select!

Sintassi

<xsl:variable
name="nome"
select="espressione">
  <!-- Contenuto:template -->
</xsl:variable>

Proprietà

Proprietà Valore Descrizione
name name Obbligatorio. Specificare il nome della variabile.
select espressione Opzionale. Definire il valore della variabile.

Esempio

Esempio 1

Se è impostato l'attributo select, l'elemento <xsl:variable> non può contenere alcun contenuto. Se l'attributo select contiene una stringa di testo, la stringa deve essere racchiusa tra virgolette.

I due esempi seguenti assegnano il valore "red" alla variabile "color":

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

Esempio 2

Se l'elemento <xsl:variable> contiene solo l'attributo name e non ha contenuto, il valore della variabile è una stringa vuota:

<xsl:variable name="j" />

Esempio 3

Esempio: l'esempio seguente assegna il contenuto dell'elemento <xsl:variable> alla variabile "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>Elemento</th>
  <th>Descrizione</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>