XML Schema 1.0 implementation
There have been changes to the way the schema processor handles recovery from
validation errors. By default the processor tries to continue validating to the
end of the file, reporting as many validation errors as it can. All errors are
reported to the
error() method of the
ErrorListener, which by default throws no exception;
error() method does choose to throw an exception then validation terminates
immediately. Validation can also be terminated early if an error limit is reached;
the error limit can be set in the
ParseOptions object that controls the validation.
(The value 1 causes termination after the first error is reported).
At the end of the document, if there have been one or more validation
errors, then a fatal error is thrown unless the "recover after validation errors"
FeatureKeys.VALIDATION_WARNINGS) is set, in which case no exception occurs
and processing can continue. Note that in this case the type annotations in any
result document are unreliable. The setting
ignored in the case where a document used as input to XQuery or XSLT is being
validated, because in that case the incorrect type annotations would cause
inconsistencies during subsequent processing.
If an element is found that cannot legitimately appear according to the content model of its parent, Saxon previously abandoned the validation of the content of the parent element, as well as the content of its following siblings. This has been changed so that the content of the offending element, and the content of its siblings, is now validated, using the context-determined type for the element (the "element declarations consistent" constraint ensures that if the same element name appears more than once in a content model, each must be associated with the same type).
The validation exception made available to the
ErrorListener now includes
a structured path indicating location of the offending node (previously the path
was available only as a string). It also includes, where available, a reference
to the schema type against which validation was attempted.
The error messages produced when a sequence of elements does not conform to the content model of a complex type have been improved. There is now more effort to distinguish different causes of the error: for example, too many repetitions of a repeated element, a mandatory element that has been omitted, an element that is in the wrong namespace.
Saxon now recognizes the XLink namespace and fetches the schema for this namespace
locally rather than fetching it from the W3C web site (which will often time out).
The local copy is not used if a
schemaLocation other than the standard W3C location
is specified (this is because some GIS schemas are known to rely on a non-standard version of the
schema for the XLink namespace).