<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="expressions" page="variables" subpage=""/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: Variable References</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title"
            content="Saxonica: XSLT and XQuery Processing: Variable References"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>Variable References</h1>
      <p>The value of a variable (local or global variable, local or global parameter) may be referred to
using the construct <code>$<i>name</i></code>, where <i>name</i> is the variable name.</p>
      <p>The variable is always bound at the textual place where the expression containing it appears;
for example a variable used within an <code>xsl:attribute-set</code> must be in scope at the point where the
 attribute-set is defined, not the point where it is used.</p>
      <p>A variable may be declared to be of a particular type, for example it may be constrained to 
be an integer, or a sequence of strings, or an attribute node. In a schema-aware environment, this
may also be a reference to a user-defined type in a schema. If there is no type declared for the variable,
it may take a value of any data type, and in general it is not possible to 
determine its data type statically.</p>
      <p>It is an error to refer to a variable that has not been declared.</p>
      <p>Starting with XPath 2.0, variables (known as range variables) may be declared within
an XPath expression, not only using <code>xsl:variable</code> elements in an XSLT stylesheet. The
expressions that declare variables are the <code>for</code>, <code>some</code>, and <code>every</code>
expressions. In XQuery, variables can also be declared in a <code>let</code> or <code>typeswitch</code>
expression, as well as in the signature of a user-written function.</p>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="functioncalls.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>