xsl:variable

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 value of a variable can be referenced within an expression using the syntax $name.

Category: declaration
Category: instruction
Content: sequence-constructor
Permitted parent elements: xsl:stylesheet ; xsl:transform ; xsl:override ; xsl:function ; any XSLT element whose content model is sequence constructor; any literal result element

Attributes

name

eqname

Defines the name of the variable.

select?

expression

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.

as?

sequence-type

Defines the type of the variable. The actual supplied value must be an instance of this type; it will not be converted. (This changed in Saxon 7.4: previous releases did a conversion.)

static?

boolean

visibility?

"public" | "private" | "final" | "abstract"

Notes on the Saxon implementation

In standard XSLT, variables once declared cannot be updated. Saxon however provides a saxon:assign extension element to circumvent this restriction. The extension attribute saxon:assignable must be set to yes on the xsl:variable in order to use this feature.

Examples

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

Links to W3C specifications

XSLT 2.0 Specification

XSLT 3.0 Specification

See also

xsl:param

saxon:assign