-
Notifications
You must be signed in to change notification settings - Fork 4
/
8.txt
59 lines (49 loc) · 3.34 KB
/
8.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
[1] [CODE(XSLTe)[[VAR[xslt:]]sort]] 要素を使うと、
選択された[[節点集合]]を並べ替えてから目的の処理を行うことができます。
<http://www.w3.org/TR/xslt#element-sort>
[3] 属性 :
,[CODE(XSLTa)[[[case-order]]]],{[CODE(ABNF)['upper-first' / 'lower-first']]},(言語依存),大文字・小文字順
,[CODE(XSLTa)[[[data-type]]]],{[[QName]]},'text',鍵の型
,[CODE(XSLTa)[[[lang]]]],{[[言語札]]},(システムの値),比較の自然言語
,[CODE(XSLTa)[[[order]]]],{[CODE(ABNF)['ascending' / 'descending']]},'ascending',照合順
,[CODE(XSLTa)[[[select]]]],[[式]],[CODE(XPath)[.]],並替えの鍵
[2] この要素は、 [CODE(XSLTe)[[VAR[xslt:]][[apply-templates]]]]
要素や [CODE(XSLTe)[[VAR[xslt:]][[for-each]]]]
要素の子要素として零個以上置けます。
[WEAK[([CODE(XSLTe)[[VAR[xslt:]]for-each]] 要素の場合は、他のどの要素より先に来なければなりません。)]]
両要素の [CODE(XSLTa)[[[select]]]] 属性で選択された節集合は、
まず並べ替えが行われてから雛形が順に適用されます。
複数の [WEAK[([CODE(XSLTe)[[VAR[xslt:]]sort]]
要素は、同順の処理に使います。最初の要素に指定された比較で同順の時には次の要素の比較を使います。
全 [WEAK[([CODE(XSLTe)[[VAR[xslt:]]sort]] 要素を使い果たした時には、
[[文書順]]とします。
なお、 [CODE(XSLTa)[order=ascending]] なら昇順、
[CODE(XSLTa)[order=descending]] なら降順になります。
[[#comment]]
* 比較
[4]
= 並べ替えの鍵となる文字列を用意しておきます。
[CODE(XSLTa)[select]] 属性の値である式を、
[[現在節]] = 対象の節, [[現在節並び]] = 並べ替え対象の全節として評価します。
この結果を暗黙の [CODE(XPathf)[[[string]]()]]
関数に通した結果を鍵とします。
= 節の比較は、鍵の比較により行います。
[CODE(XSLTa)[data-type]] 属性の値が
=- [CODE(XSLTa)[text]] なら、
そのまま文字列として比較します。
=-- [CODE(XSLTa)[lang]] 属性の言語の並べ替え方法を使いますが、
指定されていなければシステム環境依存の言語を仮定します。
=-- 大文字・小文字の同じ文字がある場合、
[CODE(XSLTa)[case-order]] 属性の値によりどちらが先かを決定します。
この既定値は実装依存です。
=-- 平仮名・片仮名の順序など、詳細は全て実装依存です。
実装規定の追加の属性で指定できるかもしれません。
= [CODE(XSLTa)[number]] なら、
暗黙の [CODE(XPathf)[[[number]]()]]
関数により数値とした上で比較します。
=- 非数は昇順では負の無限大より前とします。
<http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20>
= [CODE(ABNF)[QName − [[NCName]]]] (接頭辞付きの名前)
なら、その名前に関連付けられた並べ替え方法を使います。
- [5] [CODE(XSLTa)[case-order]] よりも [CODE(XSLTa)[order]] が強いので、降順では一見非直感的な結果になります。例えば [SAMP[A, B, a, b]] は [SAMP(XSLTa)[case-order="upper-first"]] のとき、昇順なら [SAMP[A, a, B, b]] に、降順ならこのまま逆に [SAMP[b, B, a, A]] になります。
- [6] <http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20>