XQuery 1.0 implementation

Namespace undeclarations (declare namespace p = "") are now accepted in the Query prolog.

URILiterals appearing in a query (for example, namespace URIs, collation URIs, module locations, schema locations, the base URI) now recognize ampersand-escaping of special characters. In particular, an ampersand used within a URI must be written as &.

A collation URI appearing either in an order by clause or in the default collation declaration is now required to be a valid URI, and if it is relative, it is resolved relative to the base URI from the static context before being passed to the CollationURIResolver.

Comments may now be empty, that is, (::) is allowed. This also affects XPath.

The contents of a pragma are now validated: the pragma must start with a valid QName. If the QName is in the Saxon namespace, then the local-name must represent a recognized pragma.

A new pragma extension is available in Saxon-SA: the construct (# saxon:validate-type type-name #){ expr } causes the result of the expression expr to be validated against a named global type. This follows the same rules as the type="type-name" attribute in XSLT. Validating against a global type has been found to be useful when using schemas such as FpML, which make extensive use of xsi:type, and feature local element declarations with global types.

To make it easier to embed XQuery in other environments, a new method setExternalNamespaceResolver is provided on the StaticQueryContext object.

The -v option, which invokes DTD validation, has been added to the Query command line.