<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <code class="XSLTe"><var>xslt:</var>sort</code> 要素を使うと、
選択された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">節点集合</anchor>を並べ替えてから目的の処理を行うことができます。
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/xslt#element-sort">http://www.w3.org/TR/xslt#element-sort</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> 属性 : <table><tbody><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case-order</anchor></code></td><td>{<code class="ABNF">'upper-first' / 'lower-first'</code>}</td><td>(言語依存)</td><td>大文字・小文字順</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">data-type</anchor></code></td><td>{<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">QName</anchor>}</td><td>'text'</td><td>鍵の型</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lang</anchor></code></td><td>{<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語札</anchor>}</td><td>(システムの値)</td><td>比較の自然言語</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">order</anchor></code></td><td>{<code class="ABNF">'ascending' / 'descending'</code>}</td><td>'ascending'</td><td>照合順</td></tr><tr><td><code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">select</anchor></code></td><td><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">式</anchor></td><td><code class="XPath">.</code></td><td>並替えの鍵</td></tr></tbody></table></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> この要素は、 <code class="XSLTe"><var>xslt:</var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">apply-templates</anchor></code>
要素や <code class="XSLTe"><var>xslt:</var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">for-each</anchor></code>
要素の子要素として零個以上置けます。
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<code xmlns="http://www.w3.org/1999/xhtml" class="XSLTe"><var>xslt:</var>for-each</code> 要素の場合は、他のどの要素より先に来なければなりません。)</weak>
両要素の <code class="XSLTa"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">select</anchor></code> 属性で選択された節集合は、
まず並べ替えが行われてから雛形が順に適用されます。</p><p>複数の <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<code xmlns="http://www.w3.org/1999/xhtml" class="XSLTe"><var>xslt:</var>sort</code>
要素は、同順の処理に使います。最初の要素に指定された比較で同順の時には次の要素の比較を使います。
全 <weak>(<code xmlns="http://www.w3.org/1999/xhtml" class="XSLTe"><var>xslt:</var>sort</code> 要素を使い果たした時には、
<anchor>文書順</anchor>とします。</weak></weak></p><p>なお、 <code class="XSLTa">order=ascending</code> なら昇順、
<code class="XSLTa">order=descending</code> なら降順になります。</p><form xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" ref="comment"></form><section><h1>比較</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <ol><li>並べ替えの鍵となる文字列を用意しておきます。
<code class="XSLTa">select</code> 属性の値である式を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在節</anchor> = 対象の節, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">現在節並び</anchor> = 並べ替え対象の全節として評価します。
この結果を暗黙の <code class="XPathf"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">string</anchor>()</code>
関数に通した結果を鍵とします。</li><li>節の比較は、鍵の比較により行います。
<code class="XSLTa">data-type</code> 属性の値が<ul><li><code class="XSLTa">text</code> なら、
そのまま文字列として比較します。<ul><li><code class="XSLTa">lang</code> 属性の言語の並べ替え方法を使いますが、
指定されていなければシステム環境依存の言語を仮定します。</li><li>大文字・小文字の同じ文字がある場合、
<code class="XSLTa">case-order</code> 属性の値によりどちらが先かを決定します。
この既定値は実装依存です。</li><li>平仮名・片仮名の順序など、詳細は全て実装依存です。
実装規定の追加の属性で指定できるかもしれません。</li></ul></li></ul></li><li><code class="XSLTa">number</code> なら、
暗黙の <code class="XPathf"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">number</anchor>()</code>
関数により数値とした上で比較します。<ul><li>非数は昇順では負の無限大より前とします。
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20">http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20</anchor-external></li></ul></li><li><code class="ABNF">QName − <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NCName</anchor></code> (接頭辞付きの名前)
なら、その名前に関連付けられた並べ替え方法を使います。</li></ol></p><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <code class="XSLTa">case-order</code> よりも <code class="XSLTa">order</code> が強いので、降順では一見非直感的な結果になります。例えば <samp>A, B, a, b</samp> は <samp class="XSLTa">case-order=&quot;upper-first&quot;</samp> のとき、昇順なら <samp>A, a, B, b</samp> に、降順ならこのまま逆に <samp>b, B, a, A</samp> になります。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20">http://www.w3.org/1999/11/REC-xslt-19991116-errata/#E20</anchor-external></li></ul><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <cite xml:lang="en">Add URLSearchParams.prototype.sort()</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-01-18 16:55:37 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/url/commit/960f6078a96e688c59ea3cfc3853a764d46179cf">https://github.com/whatwg/url/commit/960f6078a96e688c59ea3cfc3853a764d46179cf</anchor-external></p></section></body></html>