|Sorting is specified by adding xsl:sort elements as children of an xsl:apply-templates or xsl:for-each element. The first
xsl:sort child specifies the primary sort key, the second xsl:sort child specifies the secondary sort key and so on. When
an xsl:apply-templates or xsl:for-each element has one or more xsl:sort children, then instead of processing the selected
nodes in document order, it sorts the nodes according to the specified sort keys and then processes them in sorted order.
When used in xsl:for-each, xsl:sort elements must occur first. When a template is instantiated by xsl:apply-templates and
xsl:for-each, the current node list list consists of the complete list of nodes being processed in sorted order. xsl:sort
has a select attribute whose value is an expression. For each node to be processed, the expression is evaluated with that
node as the current node and with the complete list of nodes being processed in unsorted order as the current node list. The
resulting object is converted to a string as if by a call to the string function; this string is used as the sort key for
that node. The default value of the select attribute is ., which will cause the string-value of the current node to be used
as the sort key.
Examples (xslt:xml): Overview