<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="changes" page="intro93" subpage="xslt30-93"/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: XSLT 3.0 changes</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title" content="Saxonica: XSLT and XQuery Processing: XSLT 3.0 changes"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>XSLT 3.0 changes</h1>
      <p>(Also affects XSLT 2.0): Saxon no longer detects or reports the recoverable error XTRE0270 (conflicting definitions of
    <code>xsl:strip-space</code> and <code>xsl:preserve-space</code>). Instead it always takes the optional recovery action, 
    which is to use whichever declaration comes last. Previously this was the behaviour when applying stripping to an existing
    tree, but not when using a stripping filter during tree construction. The change is made in the interests of simplifying and
    speeding up the code (matching of whitespace stripping rules no longer shares the same code as template rule matching).</p>
      <p>(Also affects XSLT 2.0): The call <code>system-property("xsl:is-schema-aware")</code> now returns true or false depending on whether
    the particular stylesheet is schema-aware (which is true if it uses <code>xsl:import-schema</code> or if schema-awareness was selected
    via an API or command line option). Previously it returned true if the stylesheet was processed using the schema-aware version of the
    Saxon product, regardless of configuration settings.</p>
      <p>XSLT 3.0 features are available only in Saxon-EE or (in some cases) Saxon-PE, and they need to be enabled explicitly. From the
command line this can be done using the option <code>xsltversion:3.0</code>; the default is to take the version from the <code>xsl:stylesheet</code>
element, so that XSLT 3.0 features are enabled if and only if the stylesheet itself specifies <code>version="3.0"</code>.</p>
      <p>XPath 3.0 constructs such as higher-order functions (to the extent they are implemented) are automatically available 
    when XSLT 3.0 is enabled.</p>
      <p>The <code>xsl:evaluate</code> instruction is implemented.</p>
      <p>The <code>xsl:copy</code> instruction now has an optional <code>select</code> attribute, defaulting to <code>select="."</code>.</p>
      <p>The <code>saxon:iterate</code>, <code>saxon:break</code>, <code>saxon:continue</code>, and <code>saxon:finally</code> instructions are
renamed <code>xsl:iterate</code>, <code>xsl:break</code>, <code>xsl:next-iteration</code>, and <code>xsl:on-completion</code>, and are available
only if XSLT 3.0 support is enabled. The <code>xsl:break</code>
instruction is now allowed to take a sequence constructor as its content.</p>
      <p>The <code>saxon:try</code> and <code>saxon:catch</code> elements are renamed <code>xsl:try</code> and <code>xsl:catch</code>, 
                  and are available only if XSLT 3.0 support is enabled.</p>
      <p>The syntax of match patterns has been extended, to include the forms <code>$x</code>, <code>$x//a/b/c</code>, 
<code>doc(X)</code>, <code>doc(X)//a/b/c</code>, <code>element-with-id(X)</code>, <code>element-with-id(X)//a/b/c</code>,
as well as the two-argument form of <code>id()</code> and the three-argument form of <code>key()</code>.
The keyword <code>"union"</code> is allowed as an alternative to the <code>"|"</code> operator.</p>
      <p><i>Not yet implemented in patterns: <code>intersect</code> and <code>except</code> operators, parentheses, "~" syntax, patterns matching
atomic values or function items, descendant and descendant-or-self axes, namespace-node()</i></p>
      <p>The <code>unparsed-text-lines()</code> function is implemented.</p>
      <p>The <code>copy-of()</code> and <code>snapshot()</code> functions are implemented. (There is a restriction in <code>snapshot()</code>, in that it does
         not yet handle attribute or namespace nodes.</p>
      <p>The <code>xsl:analyze-string</code> instruction accepts the enhancements to regular expressions and flags defined
in XPath 3.0. It also now accepts an empty sequence as the value of the <code>select</code> attribute, treating it in the
same way as a zero-length string.</p>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="xslt-streaming-93.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>