Saxon extensions to the W3C XSLT/XQuery specifications

The EXSLT function set:distinct() is withdrawn. (It contained a bug that was non-trivial to fix, and the functionality is superseded by the distinct-values() function and by XSLT's xsl:for-each-group).

The Saxon extension function saxon:distinct() is withdrawn for the same reason.

A new function saxon:evaluate-node() is introduced. This is a variant of saxon:evaluate(), designed specifically for evaluating an XPath expression contained within a node of an XML document. It differs from saxon:evaluate() in that the static context (in particular, the namespace context) is taken from the node in the source document containing the expression, rather than from the stylesheet. The expression has access to standard functions and vendor extension functions, but not to user-defined functions or variables. The context node for evaluating the expression is also the node containing the expression, so the expression can act as a reference or pointer to other nodes in the document.

The extension function saxon:line-number() now takes an optional argument identifying the node whose line number is required. If the argument is omitted, then it applies to the context node, as before.

The XSLT extension instruction saxon:assign now works only with global variables.