Saxon extensions to the W3C XSLT/XQuery specifications

Two new extension functions saxon:index and saxon:find are available. These are particularly useful in XQuery, where they provide an equivalent to the capability offered by xsl:key in XSLT. The functions can also be useful in XSLT, because unlike xsl:key they allow any sequence to be indexed, even one that spans multiple documents. The typical usage is first to create an indexed sequence, for example by:

declare variable $indexedTowns := saxon:index(//town, saxon:expression("@state"));

and then to retrieve towns whose state is known by using saxon:find():

{ saxon:find($indexedTowns, "MA") }

This example finds all <town> elements whose state attribute has the value MA.

These extension functions are available only in Saxon-SA.

If the argument to the function saxon:expression is a compile-time constant (typically a string literal), then the XPath expression is compiled at stylesheet compile time and any errors are reported as static errors.