1個のキーでソートする
このサンプルは、ソートキーを指定して、XML文書の中のデータをソートさせるものです。それには、xsl:sort要素を使って、<xsl:sort select="ソートキー" lang="言語" data-type="text"または"number" order="ascending"または"descending" />のように記述し、xsl:for-each要素あるいはxsl:apply-templates要素で選択されたノードリストのソート条件を指定します。
select属性ではソートキーを指定します。デフォルト値は"."です。これはソートキーとして使われるカレントノードの文字列です。
lang属性では、ソートキーの言語を指定します。XML文書内のxml:langと同じ値で、指定されていない場合、言語はシステム環境に依存します。
data-type属性では、データ型を指定します。値は、textまたはnumberです。textを指定すると、lang属性で指定した言語に従って文字列としてソートされ、numberを指定すると、ソートキーは数値として扱われます。この場合、lang属性は無視されます。ascendingは昇順、descendingは降順で、デフォルトではascendingです。
sort1.xml
sort1.xsl
date-type="number"を指定しなければ、テキストとしてあつあくぁれまス。例えば、40、020、5というデータがあった場合、数値として扱われると、降順ソートなら40、020、5の順に並ぶはずですが、テキストとしてあつあくぁれると最初の文字で判断されて5、40、020という並びになります。
氏名や地位名などをソートさせる場合は、音読みか訓読みかわからないので、性格にソートするにはルビを振っておくという工夫が必要です。
これ以外に、case-orderという属性もあり、ソート対象となる最初の文字について、小文字と大文字の優先度を指定することができます。デフォルトの値は言語によって異なります。
※ xsl:sortの属性では指定できない言語の罵詈絵^-ションがあります。例えば、日本語のXMLでーたでは、ひらがなとカタカナの優先順位を指定することができません。
※ IR5.5標準インストール環境でソートを実現するには、Microsoft社独自仕様のMS XSLを使って、xsl:for-each要素に対してorxder-by属性を指定します。
<<<戻る