xsl:sort

xslt:sort 要素

[1] xslt:sort 要素を使うと、 選択された節点集合を並べ替えてから目的の処理を行うことができます。 <http://www.w3.org/TR/xslt#element-sort>

[3] 属性 :

case-order{'upper-first' / 'lower-first'}(言語依存)大文字・小文字順
data-type{QName}'text'鍵の型
lang{言語札}(システムの値)比較の自然言語
order{'ascending' / 'descending'}'ascending'照合順
select.並替えの鍵

[2] この要素は、 xslt:apply-templates 要素や xslt:for-each 要素の子要素として零個以上置けます。 (xslt:for-each 要素の場合は、他のどの要素より先に来なければなりません。) 両要素の select 属性で選択された節集合は、 まず並べ替えが行われてから雛形が順に適用されます。

複数の (xslt:sort 要素は、同順の処理に使います。最初の要素に指定された比較で同順の時には次の要素の比較を使います。 全 (xslt:sort 要素を使い果たした時には、 文書順とします。

なお、 order=ascending なら昇順、 order=descending なら降順になります。

比較

[4]

  1. 並べ替えの鍵となる文字列を用意しておきます。 select 属性の値である式を、 現在節 = 対象の節, 現在節並び = 並べ替え対象の全節として評価します。 この結果を暗黙の string() 関数に通した結果を鍵とします。
  2. 節の比較は、鍵の比較により行います。 data-type 属性の値が
    • text なら、 そのまま文字列として比較します。
      • lang 属性の言語の並べ替え方法を使いますが、 指定されていなければシステム環境依存の言語を仮定します。
      • 大文字・小文字の同じ文字がある場合、 case-order 属性の値によりどちらが先かを決定します。 この既定値は実装依存です。
      • 平仮名・片仮名の順序など、詳細は全て実装依存です。 実装規定の追加の属性で指定できるかもしれません。
  3. number なら、 暗黙の number() 関数により数値とした上で比較します。
  4. QName − NCName (接頭辞付きの名前) なら、その名前に関連付けられた並べ替え方法を使います。

[7] Add URLSearchParams.prototype.sort() (annevk著, ) <https://github.com/whatwg/url/commit/960f6078a96e688c59ea3cfc3853a764d46179cf>