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.


<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>