saxon:sort function is provided primarily for use in XPath, which has no built-in sorting
capability. In XSLT it is preferable to use
xsl:sort, in XQuery to use a FLWOR expression with an
order by clause.
saxon:sort($seq as item()*) => item()*
This form of the function sorts a sequence of nodes and/or atomic values. For atomic values, the value itself
is used as the sort key. For nodes, the atomized value is used as the sort key. The atomized value must be a single
atomic value. The values must all be comparable. Strings are sorted using codepoint collation.
saxon:sort($seq as item()*, $stored-expression as jt:net.sf.saxon.functions.Evaluate-PreparedExpression) => node()?
This form of the function sorts a sequence of nodes and/or atomic values, using the supplied stored
expression to compute the sort key for each item in the sequence. The computed sort key must either be a single
atomic value, or a node that atomizes to a single atomic value, and the sort keys must all be comparable.
Strings are sorted using codepoint collation.
A stored expression may be obtained as the result of calling
the saxon:expression function.
The stored expression is evaluated for each item in $seq in turn, with that item as the context
node, with the context position equal to the position of that item in $seq, and with the context size
equal to the size of $seq.
Example: saxon:sort(sale, saxon:expression('@price * @qty')) will evaluate price times
quantity for each child <sale> element, and return the
sale elements in ascending
numeric order of this value.