The xsl:variable
element is used to declare a variable and give it a value. If it appears at the
top level (immediately within xsl:stylesheet) it declares a global variable, otherwise it declares a local variable
that is visible only within the stylesheet element containing the xsl:variable declaration.
The mandatory name
attribute defines the name of the variable.
The value of the variable may be defined either by an expression within the optional select
attribute, or
by the contents of the xsl:variable element. In the latter case the result is a temporary tree. A
temporary tree can be used like a source document, for example it can be accessed using path expressions
and processed using template rules.
There is an optional attribute, as
, to define the type of the variable. The actual supplied
value must be an instance of this type; it will not be converted. This has changed in Saxon 7.4: previous
releases did a conversion.
In standard XSLT, variables once declared cannot be updated. Saxon however provides a saxon:assign extension element to circumvent this restriction.
The value of a variable can be referenced within an expression using the syntax $name
.
Example:
<xsl:variable name="title">A really exciting document"</xsl:variable>
<xsl:variable name="backcolor" expr="'#FFFFCC'" />
<xsl:template match="/*">
<HTML><TITLE<xsl:value-of select="$title"/></TITLE>
<BODY BGCOLOR='{$backcolor}'>
...
</BODY></HTML>
</xsl:template>