The schema-aware version of the Saxon product (Saxon-SA) includes an almost complete implementation of XML Schema 1.0. This version of the product is available from Saxonica Limited.
Known limitations include the following:
xs:NOTATION
is not supported, either as a schema component or as a data type.
xs:redefine
is supported only in the case where it does not change the namespace
of the redefined components.
QNames are not supported as default values, nor as fixed values. (They are supported as enumeration values)
Validation against list or union data types including xs:QName
as one of the
component types is not supported.
Default or fixed values specified for an element whose type is a complex type with complex content are ignored when validating instance documents.
Facets are evaluated according to XPath rules rather than XML Schema rules. For example, the pattern
syntax allows the extended syntax permitted in the XPath matches()
function, and comparisons
against facets such as minInclusive
and maxInclusive
follow the XPath semantics
for the lt
and gt
operators. This may be slightly different when comparing values such as dates,
times, and durations.
Uniqueness and key/keyref constraints are implemented only where the keys are atomic values (that is, they are not implemented for list-valued elements or attributes). Also, where element values participate in such constraints they must not be interleaved with comments or processing instructions. When evaluating these constraints, equality of values is assessed according to XPath rules rather than XML Schema rules. This means, for example, that a decimal and a double can be equal to each other, which is never the case under the XML Schema rules.
ID and IDREF constraints are checked only for values typed as xs:ID, xs:IDREF, or xs:IDREFS. They are not checked for types derived from these base types.
Saxon implements schema processing only to the extent required for XPath, XSLT, and XQuery processing. 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.