<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet href="../make-menu.xsl" type="text/xsl"?><html>
   <head>
      <this-is section="conformance" page="xqj" subpage=""/>
      <!--
           Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: XQJ Conformance</title>
      <meta name="coverage" content="Worldwide"/>
      <meta name="copyright" content="Copyright Saxonica Ltd"/>
      <meta name="title" content="Saxonica: XSLT and XQuery Processing: XQJ Conformance"/>
      <meta name="robots" content="noindex,nofollow"/>
      <link rel="stylesheet" href="../saxondocs.css" type="text/css"/>
   </head>
   <body class="main">
      <h1>XQJ Conformance</h1>
      <p>Saxon implements XQJ, the XQuery API for Java defined in 
<a href="http://www.jcp.org/en/jsr/detail?id=225" class="bodylink">JSR 225</a>. The current version that is implemented
is the Final Release dated March 2009, which was publicly announced on 24 June 2009.</p>
      <p>The compliance definition for XQJ (section 3 of the specification) requires a statement of how all aspects
of the specification that are implementation-defined have been implemented. The following table provides this
statement for the Saxon implementation.</p>
      <table>
         <tr>
            <td content="para">
               <p>
               <b>Implementation-defined feature</b>
            </p>
            </td>
            <td content="para">
               <p>
               <b>Saxon implementation</b>
            </p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
The class name of the XQDataSource implementation
</p>
            </td>
            <td content="para">
               <p>
               <code>net.sf.saxon.xqj.SaxonXQDataSource</code>
            </p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p> 
All properties defined on the XQDataSource implementation
</p>
            </td>
            <td content="para">
               <p>
The following properties are defined: allowExternalFunctions, dtdValidation, expandAttributeDefaults, expandXInclude,  retainLineNumbers,
schemaValidationMode, stripWhitespace, useXsiSchemaLocation,  xmlVersion, xsdVersion.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p> 
The syntax and semantics for commands, assuming executing commands through XQExpression is supported.
</p>
            </td>
            <td content="para">
               <p>
No commands are supported (only XQuery expressions).
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p> 
Is cancelling of query execution supported?
</p>
            </td>
            <td content="para">
               <p>
No, Query execution cannot be cancelled.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
The default and supported values for each parameter described in XQuery Serialization
</p>
            </td>
            <td content="para">
               <p>
Although this is implementation-defined, the test suite makes some assumptions and these have been followed.
The defaults are: byte-order-mark="no" cdata-section-elements="" doctype-public=null doctype-system=null 
 encoding="utf-8" indent="yes" media-type="application/xml" method="xml" normalization-form="none"
 omit-xml-declaration="yes" standalone="omit" undeclare-prefixes="no" use-character-maps="" version="1.0" 
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Additional StAX or SAX event types being reported, beside the event types
documented in [the] specification
</p>
            </td>
            <td content="para">
               <p> 
None.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Support for XDM instances and types based on user-defined schema types
</p>
            </td>
            <td content="para">
               <p>
When used with Saxon-EE, user-defined schema types are supported, to the extent that the
XQJ interface allows them to be used. 
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
The semantics with respect to node identity, document order, and full node context,
when a node is bound to an external variable.
</p>
            </td>
            <td content="para">
               <p>
When a node is bound to an XQItem and hence to a variable in a query, node identity, document order,
and "context" (relationships to other nodes) are maintained.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Is login timeout supported?
</p>
            </td>
            <td content="para">
               <p>
No. (There is no concept of login.)
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Are transactions supported?
</p>
            </td>
            <td content="para">
               <p>
No. Saxon only supports read-only query via the XQJ interface.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Behaviour of the <code>getNodeUri()</code> method, defined on <code>XQItemAccessor</code>, for other than document nodes.
</p>
            </td>
            <td content="para">
               <p>
The method is defined on any node, and returns the URI of the external entity in which the containing element originally
appeared, if known, or the empty URI otherwise.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Behaviour of the <code>getTypeName()</code> method, defined on <code>XQItemType</code>, for anonymous types.
</p>
            </td>
            <td content="para">
               <p>
Anonymous types have a system-generated name.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Behaviour of the <code>getSchemaURI()</code> method, defined on <code>XQItemType</code>
            </p>
            </td>
            <td content="para">
               <p>
The system identifier (document URI) of the original schema document is reported if the information is available.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Behaviour of the <code>createItemFromDocument()</code> methods, defined on <code>XQDataFactory</code>, if the specified
value is not a well-formed XML document.
</p>
            </td>
            <td content="para">
               <p>
An exception is thrown.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
Behaviour of the <code>bindDocument</code> methods, defined on <code>XQDynamicContext</code>, if the specified
value is not a well-formed XML document.
</p>
            </td>
            <td content="para">
               <p>
An exception is thrown.
</p>
            </td>
         </tr>
         <tr>
            <td content="para">
               <p>
The error codes, reported through <code>XQQueryException</code>, in addition to the standard error codes listed in [XQuery]
and its associated specifications.
</p>
            </td>
            <td content="para">
               <p>
None. The Saxon implementation does not currently use the class <code>XQQueryException</code>.
</p>
            </td>
         </tr>
      </table>
      <div class="boxed"
           style="border: solid thin; background-color: #B1CCC7; padding: 2px">Section 19 of the XQJ specification ("Interoperability") suggests that an XQJ specification
should accept items and built-in types that were created using a different vendor's
XQJ implementation. In general, Saxon will only handle the Saxon implementation of XQJ interfaces.
At any rate, it has not been validated with third-party implementations. </div>
      <table width="100%">
         <tr>
            <td>
               <p align="right"/>
            </td>
         </tr>
      </table>
   </body>
</html>