XML Schema 1.1 implementation

Various minor changes have been made to bring Saxon 9.4 into full conformance with the XSD 1.1 specification. Most of these are edge cases and bug fixes, mostly prompted by resolution of issues in the specification.

Assertions in XSD 1.1 now use the correct rules for typing (that is, for type annotation of the tree made visible to the XPath expression defining the assertion).

Following its removal from XSD 1.1, support for the xs:precisionDecimal data type has been dropped.

In regular expressions, the block names that are recognized (whether running XSD 1.0 or 1.1) in constructs of the form \p{IsBlockName} now include blocks defined in all Unicode versions from version 3.1 to version 6.0 inclusive. Where the characters included in a block differ from one version to another, Saxon recognizes the union of the various definitions. When XSD 1.1 is enabled Saxon treats an unrecognized block name as a warning condition rather than an error; in this case both \p{IsBlock} and \P{IsBlock} will match any character. For example, Saxon now recognizes both \p{IsGreek} and \p{IsGreekAndCoptic}. Internally, the recognition of block names no longer depends on what is recognized by the underlying Java regex library.

In regular expressions, character category matches such as \P{Nd} now use the categorization of characters defined in Unicode 6.0.0. This not only affects characters added to Unicode since Unicode version 3.1, it also changes the categorization of some existing characters.

In regular expressions, the metacharacters \i and \c now use the definitions of name characters from XML 1.0 fifth edition and XML 1.1 second edition (which are identical), regardless whether XML 1.1 support is enabled or not.

All testing of names in Saxon now uses the rules defined in XML 1.1 and in XML 1.0 fifth edition (which are identical), whether or not XML 1.1 or XSD 1.1 is enabled. This includes \i and \c in regular expressions, the rules for data types such as xs:NCName and xs:QName, parsing of names in XPath expressions and XQuery element constructors, etc. The only thing not covered is where names are checked by non-Saxon software, for example the XML parser.

A configuration option MULTIPLE_SCHEMA_IMPORTS has been added to force xs:import to fetch the referenced schema document. By default the xs:import fetches the document only if no schema document for the given namespace has already been loaded. With this option in effect, the referenced schema document is loaded unless the absolute URI is the same as a schema document already loaded.

A configuration option ASSERTIONS_CAN_SEE_COMMENTS has been added to control whether comments and processing instructions are visible to the XPath expression used to define an assertion. By default (unlike Saxon 9.3), they are not made visible.

On the com.saxonica.Validate command line, a new option -stats:filename is available: it causes statistics about the validation episode to be captured in the specified XML file.