Conformance with XML Schema 1.0
The schema-aware version of the Saxon product (Saxon-SA)
includes a complete implementation of XML Schema 1.0. This version of the product
is available from Saxonica Limited.
Test results have been submitted against the W3C XML Schema Test Suite. Conformance is around 98%
in the latest submission; this reflects both a large number of bugs reported by Saxonica against the
test suite, and a significant number of minor deviations in Saxon 8.8 that were revealed by the test suite, and
which have been fixed in Saxon 8.9
Known limitations include the following:
Saxon imposes limits on the values of
maxOccurs appearing on any
particle in a content model. These limits are designed to prevent out-of-memory errors. By default, the upper limit for
minOccurs is 100 and the upper limit for
maxOccurs (other than "unbounded") is 250.
If these limits are exceeded,
a warning is output, and the values specified are replaced with the highest allowed value (which is "unbounded"
in the case of
maxOccurs). The limits are configurable using the method
in the class
SchemaAwareConfiguration. If they are set too high, however, out-of-memory or stack overflow errors will
occur either during schema compilation or during instance validation.
Saxon implements schema processing only to the extent required for XPath, XSLT, and XQuery processing
and for assessment of document validity. This
means that PSVI properties beyond those required for the XPath data model are not provided. It also means that
validation errors are fatal, they do not result in a PSVI that indicates the validation outcome for individual nodes.
Elements and attributes of type
xs:ENTITIES are not checked against the list of unparsed entities
declared in the document. (This check is not required during XSLT or XQuery validation, but it is required by standalone
Saxon uses a different algorithm to evaluate type subsumption from the one given in the specification. The Saxon
algorithm (an implementation of the algorithm published by Henry Thompson and Richard Tobin of the University of
Edinburgh) is more accurate than the one in the W3C specification in deciding whether one complex type subsumes another.
It therefore permits some complex type restrictions that the cruder W3C algorithm disallows.
Saxon also uses the Thomson and Tobin algorithm to evaluate the Unique Particle Attribution constraint. The effect
of this is that no UPA violation is reported when a complex type contains two distinct element particles that are references
same element declaration, since the element declaration can be identified unambiguously.
Saxon does not allow a user-defined type to be derived directly from
xs:anySimpleType. It seems
that the specification does not disallow this, though the effect of doing it is very unclear.