<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="changes" page="intro91" subpage="s9api91"/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: S9API</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title" content="Saxonica: XSLT and XQuery Processing: S9API"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>S9API</h1>
      <p>A new method <code>Processor.writeXdmValue(XdmValue, Destination)</code> has been added, allowing any
XDM value (for example, a document node) to be written to any <code>Destination</code> (for example, a <code>Serializer</code>, 
a <code>Validator</code>, or a <code>Transformer</code>). For usage examples, see the S9APIExamples demonstration program.</p>
      <p>A new constructor has been added to <code>XdmValue</code> allowing an <code>XdmValue</code> to be constructed
from a sequence of items.</p>
      <p>A new interface <code>MessageListener</code> is available. A user-written implementation of <code>MessageListener</code>
may be registered with the <code>XsltTransformer</code> to receive notification of <code>xsl:message</code> output. The class
has a single method <code>message()</code>, which is called once for each message; the parameters include the message content
(as an XML document), a boolean indicating whether <code>terminate="yes"</code> was requested, and a <code>SourceLocator</code>
to distinguish which <code>xsl:message</code> instruction generated the output.</p>
      <p>New methods have been added to <code>ItemTypeFactory</code> to allow creation of ItemTypes and XdmAtomicValues representing
external Java objects, which can be passed to a stylesheet or query for use in conjunction with external functions (extension functions).
An example of how to achieve this has been added to the sample application <code>S9APIExamples.java</code> (test QueryF).</p>
      <p>New methods are provided on the <code>XQueryCompiler</code> allowing the query to be supplied as a <code>File</code>, as
a <code>Reader</code>, or as an <code>InputStream</code>. Methods are also provided to specify the encoding of the query source text.</p>
      <p>New methods are available on classes <code>XQueryEvaluator</code>
and <code>XsltTransformer</code> to allow the output from the <code>trace()</code> function to be directed
to a specified output stream, or to be discarded.</p>
      <p>A new method is available on the <code>XPathCompiler</code> class to import a schema namespace for reference
within the body of the expression.</p>
      <p>New methods are available on <code>XQueryExecutable</code> and <code>XPathExecutable</code> to obtain the result type of
the query or expression, as determined by static analysis.</p>
      <p>New methods are available on <code>ItemType</code> and <code>OccurrenceIndicator</code> to determine whether one type
subsumes another.</p>
      <p>These methods make it easier to write application code that can handle query results when the type of the result is not
known <i>a priori</i>.</p>
      <p>A new method is available on <code>XPathCompiler</code> allowing XSLT patterns to be compiled. A pattern
is treated as an expression that returns true if the pattern matches the context node, false otherwise.</p>
      <p>A new method is available on <code>XPathSelector</code> to return the effective boolean value of the XPath
expression.</p>
      <table width="100%">
         <tr>
            <td>
               <p align="right"><a class="nav" href="jaxp91.xml">Next</a></p>
            </td>
         </tr>
      </table>
   </body>
</html>