Changes to XSD support
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.