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:package
               ; xsl:stylesheet
               ; xsl:transform
               ; xsl:override
               ; xsl:function
               ;  any XSLT element whose content model is 
        sequence-constructor; any literal result element 
            
Attributes
| 
                   | 
                   | Defines the name of the variable. | 
| 
                   | 
                   | The value of the variable may be defined
                    either by an expression within the optional  | 
| 
                   | 
                   | Defines the required type of the variable. The supplied value of the variable will be converted to this type if required. | 
| 
                   | 
                   | The value  | 
| 
                   | 
                   | New in XSLT 3.0. Allowed only for global
                    variables (not local variables). Determines the potential visibility of the
                    component corresponding to this variable; the default is
                     | 
| 
                   | 
                   | Allows additional type information to be supplied using Saxon extension syntax. For details see saxon:as. | 
| 
                   | 
                   | May be set on
                    global variables. Setting the value to  | 
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>