Functions, operators, and data types for XPath 2.0
Collations can now be specified directly using a URI, without requiring a saxon:collation
declaration. This makes them available in XQuery and XPath applications as well as XSLT. The URI takes
a form such as http://saxon.sf.net/collation?lang=de;strength=primary
and is specified
fully in Collation URIs. {r/addq1, sort26}
The collection
function is implemented. The Saxon implementation interprets
the URI of the collection as a reference to an XML document that acts as a catalogue listing the
documents in the collection. An example of a catalogue document is:
In effect, collection("a.xml")
is merely a shorthand for
document(document("a.xml")/collection/doc/@href)
. My thinking is to extend the
catalogue structure in future to allow options to be specified for how errors are handled, how
the documents are parsed (e.g. validation, space stripping), and whether the documents should be
locked in memory. {mdocs19}
The tokenize()
function now supports the facility to split a string into its invididual
characters if the regex matches a zero-length string. For example, tokenize('alphabet', '')
returns the sequence ('a', 'l', 'p', 'h', 'a', 'b', 'e', 't')
. Note: there has
been some discussion on this topic in the public-qt-comments list, and the specification could
change as a result. {regex19}
In XPath expressions in XSLT stylesheets, core functions can now appear in the fn:
namespace (currently http://www.w3.org/2003/05/xpath-functions
). Of course, they
can also be unprefixed. {coreFunction101}
The result of dividing two integers is now a decimal. {math-two17}
Values of type xs:language
are now properly validated. {type008}