Saxon extensions to the W3C XSLT/XQuery specifications
New XSLT 3.0 instructions such as
xsl:try no longer
have synonyms in the Saxon namespace.
saxon:for-each-group() is dropped (superseded by "group by"
New extension functions
saxon:type are available,
giving access to schema information. The
saxon:schema() function obtains information
from all the schema components available in the query or stylesheet; the
function gives information about the type annotation of a node. In both cases, the information
is returned as a function item which behaves like a map from schema component property names to values;
for example the name of the type annotation of a node is given by
A new extension function
saxon:send-mail() is available to send email via an SMTP server.
A new extension function
saxon:key-map() is available: this allows the index constructed
xsl:key to be viewed as a map, giving extra functionality such as getting all the entries
in a given range, enumerating the key values, concatenating keys across multiple documents, processing the
entries in sorted order, etc.
The third argument of
saxon:transform(), which supplies parameters to an XSLT transformation,
may now take the form of a map, allowing the parameter value to be any value whatsoever (the old mechanism restricted
it to atomic values.)
The extension function
saxon:index has changed to expect a function as its second argument
rather than a prepared expression, and it now returns a map which can be accessed using all the standard
map functions. The extension function
saxon:find is now a deprecated synonym for
means that it only accepts a single atomic value.
There is no longer an option to specify a collation.
A new flag "v" has been added to
saxon:deep-equal() to suppress the check that
two elements have the same "variety" of type: for example if one has element-only
content, the other must have element-only content. This check was not performed
in previous releases; in this release it is performed by default (as required by the
fn:deep-equal() specification), but may be suppressed using this option. The option is
useful when comparing validated and unvalidated documents.
The proposed EXPath file module (see http://www.expath.org/modules/file/) is implemented (in Saxon-PE and -EE). This provides a number of extension functions for reading and writing files in filestore, creating and deleting files and directories, listing the contents of directories, and so on.
The EXPath zip module (see http://expath.org/spec/zip) is implemented. The implementation is derived from the original implementation by Florent Georges, but has been more closely integrated into Saxon. This module is open source code; the extensions are integrated into the Saxon-PE and Saxon-EE distribution, and are available to Saxon-HE users in source code form, where they can be linked to the product in the same way as any other extension functions (see Integrated extension functions. The implementation is not thoroughly tested and there are a number of gaps in the specification. Neither the specification nor the implementation should be regarded as stable.
A new serialization option
saxon:attribute-order is available. The value is a whitespace-separated
list of attribute names. Attributes whose names are present in the list come first, in the order specified;
other attributes follow, sorted first by namespace URI and then by local name.
-wrap option is used in XQuery, the serializer is now capable of generating an XML representation
of a map, using nested elements to represent the entries in the map with their keys and values.