XQuery 1.0 implementation
The change defined by bug 5083 is implemented: namespace URIs declared in a direct element constructor may contain doubled curly braces ("{{" or "}}") to represent single curly braces, and must not contain curly braces unless they are so doubled.
The streaming copy optimization, previously available only with XSLT, is now
available also with XQuery. This allows a subset of XQuery expressions to be evaluated in streaming mode, that is, without building
the tree representation of the source document in memory. The facility is available only in Saxon-SA. It can be invoked either
using the extension function saxon:stream()
or by means of the pragma (# saxon:stream #){ expr }
.
Use the -explain
switch on the command line to check whether the optimization is successful.
An additional option -xsd:schemadoc1.xsd;schemadoc2.xsd...
is available on the command line. This supplies
a list of additional schema documents to be loaded. These are not automatically available in the static context of the query, but they
are available for use when validating input documents (or result documents). The argument can also be used to supply the schema
location of a schema document imported by the query, in the case where the query refers only to the target namespace of the schema
and not to its location.
For consistency, the command line now allows the file name containing the query text to be specified using the option
-q:filename
, and an inline query can be specified using -qs:querytext
(place the option in quotes
if the query text contains spaces). The existing convention of specifying the query file as the last option before any query parameters
will continue to work.
An additional command line option -traceout
allows the output from the trace()
function to be directed
to a file, or to be discarded. A corresponding option is available in the API (classes DynamicQueryContext
and XQueryEvaluator
).
The native API for XQuery, specifically the StaticQueryContext
object, now allows external
variables to be declared, as an alternative to declaring them in the Query prolog. This facility has not yet
been added to S9API, pending user feedback.
The extension saxon:validate-type
now allows validation of attribute nodes (the expression may be a computed
attribute constructor). This was previously accepted in the syntax, but had no effect.
The ability to compile queries into Java source code has been extended, in that some constructs that were not previously supported can now be compiled. Some restrictions remain. One important enhancement is that many calls to Java extension functions can now be compiled. This is particularly beneficial because it means that these calls no longer rely on Java reflection, which gives the opportunity for a substantial performance improvement.