XML Schema 1.0 changes

There is a rule in both XSD 1.0 and XSD 1.1 that components redefined using xs:redefine must have been defined immediately within the schema document referenced by the xs:redefine element. Previous releases of Saxon did not enforce this rule, instead allowing the redefined component to be either in the redefined schema document or in an indirectly included schema document. Saxon 9.3 checks the rule, but reports any violations in the form of a warning rather than a hard error, to avoid invalidating schemas that previously worked.

Elements and attributes of type xs:ENTITY or xs:ENTITIES are now checked against the list of unparsed entities declared in the document. (This check is not performed during validation invoked by XSLT or XQuery validation, but it is performed during standalone schema validation.)

There is a new switch FeatureKeys.VALIDATION_COMMENTS to control whether comments are written into an instance document when validation fails. Previously this always happened if the switch FeatureKeys.VALIDATION_WARNINGS was on; it can now be controlled separately, and the default is off. A corresponding switch has been added to the configuration file. The command-line option -outval:recover sets both switches on. Internally the switches are held in the ParseOptions object and can thus be set differently for different validation episodes. For the FeatureKeys.VALIDATION_WARNINGS switch, the two flags previously held in the default ParseOptions and in local Configuration data have been combined into one, preventing the use of inconsistent settings.

Static type checking is now applied to the XPath expressions in the xs:field and xs:selector elements of identity constraints. Warnings are reported if the paths select nothing, or if the field expression potentially selects multiple nodes, an empty sequence (in the case of xs:key only), or nodes whose type is not a simple type or a complex type with simple content.