[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
なら降順になります。
select
属性の値である式を、
現在節 = 対象の節, 現在節並び = 並べ替え対象の全節として評価します。
この結果を暗黙の string()
関数に通した結果を鍵とします。data-type
属性の値がtext
なら、
そのまま文字列として比較します。lang
属性の言語の並べ替え方法を使いますが、
指定されていなければシステム環境依存の言語を仮定します。case-order
属性の値によりどちらが先かを決定します。
この既定値は実装依存です。number
なら、
暗黙の number()
関数により数値とした上で比較します。QName − NCName
(接頭辞付きの名前)
なら、その名前に関連付けられた並べ替え方法を使います。case-order
よりも order
が強いので、降順では一見非直感的な結果になります。例えば A, B, a, b は case-order="upper-first" のとき、昇順なら A, a, B, b に、降順ならこのまま逆に b, B, a, A になります。[7] Add URLSearchParams.prototype.sort() (annevk著, ) <https://github.com/whatwg/url/commit/960f6078a96e688c59ea3cfc3853a764d46179cf>