Dreamweaver TechniqueJAVA Script サンプル | CSS sample | JAVA Applet sample | Flash Sample
HTML4.0 riference | DynamicHTMLXHTML | XML sample | XSLT sample | RIKO's ASP Trial

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

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html lang="ja">
<head><title>sort1</title></head>
<body>
   <div><xsl:apply-templates select="全体" /></div>
</body>
</html>
</xsl:template>

<xsl:template match="全体">
   <table border="1">
      <caption>年齢をソートしています</caption>
      <xsl:for-each select="情報">
         <xsl:sort select="氏名/@年齢" lang="ja" data-type="number" order="descending" />
         <tr><th>氏名</th><td><xsl:value-of select="氏名" /></td></tr>
         <tr style="background-color:silver;"><th>年齢</th><td><xsl:value-of select="氏名/@年齢" />才</td></tr>
         <tr><th>ハンドル</th><td><xsl:value-of select="ハンドル" /></td></tr>
         <tr><th>住所</th><td><xsl:value-of select="住所" /></td></tr>
         <tr><th>勤務先</th><td><xsl:value-of select="勤務先" /></td></tr>
      </xsl:for-each>
   </table>
</xsl:template>
</xsl:stylesheet>

 

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属性を指定します。

<<<戻る

R HOUSE | RIKO's Trial Page | Shirley's Pettit Case | Shirley's i-box | Shirley's little box