Saxon extensions to the W3C XSD specification
The saxon:flags attribute of the
xs:pattern
facet was implemented in Saxon 9.9 but not
documented or tested; it has now been made official. It allows flags for regular expression matching to be specified,
following the rules for XPath functions such as matches()
.
A new attribute xs:list/@saxon:separator is available for list types. The attribute holds
a regular expression that is used to tokenize the supplied value, according to the rules of the XPath tokenize()
function. For example with <xs:list saxon:separator=","/>
, a list of integers in an attribute can now be
comma-separated rather than space-separated.
A new constraining facet saxon:distinct is available for list types; if present (with the value "true"), the list must not contain duplicate values. If a list type has this property, then any types derived by retriction must also have the property.
A new constraining facet saxon:order is
available for list types. The value may be ascending
or descending
. If present, the items in the list must be
in ascending or descending order (which implies that they must all be comparable). If a list type has this property,
then any types derived by retriction must have the same property.
A new attribute xs:unique/xs:field/@saxon:order="ascending|descending" is available for use with uniqueness constraints.
If the attribute is present on any field of a uniqueness constraint, it indicates that the fields participating in the
constraint must not only have unique values, they must also be correctly ordered. If the attribute is present on at
least one field of a uniqueness constraint, then it defaults to saxon:order="ascending"
on any fields
where it is not specified.
Not only does this provide another kind of integrity constraint that is quite hard to express using assertions, it also provides
much more efficient checking of uniqueness constraints in the case where it is known that the data is correctly sorted.
This validation check can be usefully applied to a document that is to form the input of the xsl:merge
instruction
in XSLT 3.0.