Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 - |
目次
索引
![]() ![]() |
第1部 アプリケーション開発の基本 | > 第3章 データを検索する方法 | > 3.5 検索結果をソートする |
XML文書中の任意の要素ノードまたはその要素ノードの属性ノードが持つ文字列でソートすることができます。文字列の大小関係は、文字列の文字コード値の大小関係です。文字列でソートする場合は、ソート式のキー指定にテキスト式、属性式または単一行関数指定のrlen関数を指定します。
キー指定の詳細については、“B.5.1 ソート式の書式”を参照してください。
例として以下の文書があるものとします。
文書A
<doc> : <basic date="2006年01月22日"> : </basic> <detail> : <destination area="東京都千代田区八重洲">東京営業所</destination> : <train>13500円</train> : </detail> : </doc> |
文書B
<doc> : <basic date="2006年02月03日"> : </basic> <detail> : <destination area="大阪府大阪市阿倍野区阿倍野元町">大阪支店</destination> : <train>3800円</train> : </detail> : </doc> |
文書C
<doc> : <basic date="2006年01月13日"> : </basic> <detail> : <destination area="北海道札幌市中央区">北海道支店</destination> : <train>7500円</train> : </detail> : </doc> |
文書D
<doc> : <basic date=""> : </basic> <detail> : <destination area="愛知県名古屋市千種区覚王山">愛知支店</destination> : <train>2100円</train> : </detail> : </doc> |
例1
交通費(train)の安い順(昇順)にソートします。
/doc/detail/train/text()結果:文書D、B、C、Aの順に返却されます。
例2
出張日(date)の早い順(昇順)にソートします。
/doc/basic/@date結果:文書C、A、B、Dの順に返却されます。
文字コードの大きい順(降順)にソートしたい場合は、キー指定のあとに“DESC”を指定します。
例3
交通費(train)の高い順(降順)にソートします。
/doc/detail/train/text() DESC結果:文書A、C、B、Dの順に返却されます。
例4
出張日(date)の遅い順(降順)にソートします。
/doc/basic/@date DESC結果:文書B、A、C、Dの順に返却されます。
XML文書中にテキスト式で指定したテキストノードがない場合は、“DESC”の指定の有無にかかわらず、そのXML文書は最後に返却されます。上記の例では、文書Dは、出張日の早い順でも遅い順でも最後に返却されます。
文字列でソートする場合、文字列の先頭20バイトをキーにしてソートを実施します。このため、指定したキー指定の文字列の長さが20バイトよりも大きい場合、XML文書は20バイト目以降の文字で正しくソートされません。このような場合は、キー指定にrlen関数を指定して、先頭から何文字をソートキーとするかを指定できます。
rlen関数の詳細については、“B.2.4 単一行関数指定”を参照してください。
例5
出張先(destination)でソートしたい場合
rlen(/doc/detail/destination/text(),10)上記のように指定すると、出張先の先頭から10文字をソートキーとして利用します。
例6
出張エリア(area)でソートしたい場合
rlen(/doc/detail/destination/@area,30)上記のように指定すると、出張エリアの先頭から30文字をソートキーとして利用します。
目次
索引
![]() ![]() |