xsl:apply-templates 要素や xsl:for-each 要素は、 何も指定しないと元の文書に現れる順序でマッチしていきます。 これを別の順序にすることができます。
xsl:apply-templates 要素または xsl:for-each 要素の子要素に xsl:sort 要素を追加することで順序づけを行います。 ソートキーは select 属性で指定します。 ソートキーを複数設定したい場合、1番目の xsl:sort 要素に1次ソートキー、2番目の xsl:sort 要素に2次ソートキー、というように指定していきます。
<xsl:sort select="式" lang="ja" data-type = "text"(辞書順)または "number"(数値の順) order = "ascending"(昇順)または "descending"(降順) case-order = "upper-first"(大文字が先)または "lower-first"(小文字が先) />
指定しないと、data-type="text", order="ascending"、 つまり辞書順、昇順になります。
さきほどの例では、
<xsl:apply-templates select="bands/band"/>
の部分を以下のように書き換えると、バンド/アーティスト名の昇順で並びます。
<xsl:apply-templates select="bands/band"> <xsl:sort select="." data-type="text" order="ascending" /> </xsl:apply-templates>