xsl:param
Used to define a formal parameter to a template, the stylesheet, a function, or an iteration.
Category: declaration
Content: sequence-constructor
Permitted parent elements: 
         xsl:package
         ; xsl:stylesheet
         ; xsl:transform
         ; xsl:override
         ; xsl:function
         ; xsl:template
         ; xsl:iterate
      
Attributes
| 
 | 
 | The name of the parameter. | 
| 
 | 
 | The default value of the parameter may be
                    defined either by a  | 
| 
 | 
 | Defines the required type of the parameter. The supplied value of the parameter will be converted to this type if required. If the parameter is omitted, the default value must conform to the type. Note that if no default is specified, the default is a zero-length string, which may conflict with the required type. | 
| 
 | 
 | Not allowed for function parameters, which are always required. If the parameter is required, no default value may be specified. Failure to supply a value for a required parameter gives a run-time error (the specification says that in the case of xsl:call-template, it should be a static error). | 
| 
 | 
 | The value  | 
| 
 | 
 | The value  | 
| 
 | 
 | 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  | 
Saxon availability
Available in XSLT 1.0 and later versions. Available in all Saxon editions. Available for all platforms.
Notes on the Saxon implementation
It is strongly recommended to use the as attribute to declare the expected type
                of a parameter. Not only does this help debugging (by catching errors closer to the point where
                they occur), it also helps the Saxon optimizer generate more efficient code.
XSLT 3.0 introduces static parameters (global parameters declared with
                        static="yes"). These are implemented since Saxon 9.5. The value
                    of a static parameter must be known at stylesheet compile time. Static
                    parameters can be referenced in [xsl:]use-when attributes, and also
                    in the initializers of other static parameters and variables. The scope rules
                    are a little different from other global variables and parameters - forwards
                    references are not allowed. The values of static parameters may be supplied from
                    the command line in the same way as dynamic parameters; they may also be
                    supplied via a new method call on the s9api XsltCompiler object.
In standard XSLT, the value of a global variable cannot be updated once it has
                    been declared using xsl:param. Saxon however provides a saxon:assign extension element to circumvent this restriction. The
                    extension attribute saxon:assignable must be set to
                        yes on the relevant xsl:param in order to use this
                    feature.
The type-information attribute was removed at Saxon 7.5.
Details
As a template parameter, xsl:param must be used as an immediate
                    child of the xsl:template
                    element. As a stylesheet parameter, it must be used as an immediate child of the
                        xsl:stylesheet
                    element.
In XSLT 2.0, xsl:param can appear as a child of xsl:function, as a function
                    parameter.
In XSLT 3.0, xsl:param can also appear as a child of xsl:iterate, as an iteration
                    parameter.