Saxon extensions to the W3C XSD specification

In assertions, and on all elements representing facets (for example pattern), Saxon supports the attribute saxon:message="message text". This message text is used in error messages when the assertion or facet is not satisfied.

The XSD 1.1 specification allows vendor extensions in the form of vendor-defined primitive types and vendor-defined facets. Saxon 9.2 exploits this freedom to provide a new facet, saxon:preprocess. This is a pre-lexical facet (like xs:whiteSpace) in that it is used to transform the supplied value before validation. The preprocessing is done using an arbitrary XPath expression which takes a string as input and produces a string as output. For example <saxon:preprocess action="normalize-unicode($value)"/> can be used to perform Unicode normalization, while <saxon:preprocess action="upper-case($value)"/> normalizes the value to upper case. This is done before application of other facets such as the pattern and enumeration facets. It is also possible to provide another XPath expression to reverse the process, for use when the typed value is converted back to a string. For more information see The saxon:preprocess facet.