<?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet href="../../make-menu.xsl" type="text/xsl"?><html> <head> <this-is section="extensions" page="functions" subpage="sort"/> <!-- Generated at 2011-12-09T20:47:22.916Z--><title>Saxonica: XSLT and XQuery Processing: saxon:sort()</title> <meta name="coverage" content="Worldwide"/> <meta name="copyright" content="Copyright Saxonica Ltd"/> <meta name="title" content="Saxonica: XSLT and XQuery Processing: saxon:sort()"/> <meta name="robots" content="noindex,nofollow"/> <link rel="stylesheet" href="../../saxondocs.css" type="text/css"/> </head> <body class="main"> <h1>saxon:sort()</h1> <p>The <code>saxon:sort</code> function is provided primarily for use in XPath, which has no built-in sorting capability. In XSLT it is preferable to use <code>xsl:sort</code>, in XQuery to use a FLWOR expression with an <code>order by</code> clause.</p> <p><b>saxon:sort($seq as item()*) => item()*</b></p> <p>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.</p> <p><b>saxon:sort($seq as item()*, $stored-expression as jt:net.sf.saxon.functions.Evaluate-PreparedExpression) => node()?</b></p> <p>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.</p> <p> A stored expression may be obtained as the result of calling the <a class="bodylink" href="../../extensions/functions/expression.xml">saxon:expression</a> function.</p> <p>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. </p> <p>Example: saxon:sort(sale, saxon:expression('@price * @qty')) will evaluate price times quantity for each child <sale> element, and return the <code>sale</code> elements in ascending numeric order of this value.</p> <table width="100%"> <tr> <td> <p align="right"><a class="nav" href="stringtobase64binary.xml">Next</a></p> </td> </tr> </table> </body> </html>