Interstage Shunsaku Data Manager アプリケーション開発ガイド - Microsoft(R) Windows(R) 2000/ Microsoft(R) Windows Server(TM) 2003 - - UNIX共通 -
目次 索引 前ページ次ページ

第1部 アプリケーション開発の基本> 第3章 データを検索する方法> 3.5 検索結果をソートする

3.5.2 数値でソートする

XML文書の任意の要素ノードまたはその要素ノードの属性ノードが持つ文字列を数値とみなしてソートすることができます。数値とみなしてソートするには、ソート式のキー指定に、単一行関数指定のval関数を指定します。val関数の引数には、テキスト式または属性式を指定します。

単一行関数指定の詳細については、“B.2.4 単一行関数指定”を参照してください。

例として以下の文書があるものとします。

文書A

<doc>
  <basic expense="7650円">
    :
  </basic>
  <detail>
    :
    <taxi>1890円</taxi>
    :
  </detail>
</doc>

文書B

<doc>
  <basic expense="12980円">
    :
  </basic>
  <detail>
    :
    <taxi>11150円</taxi>
    :
  </detail>
</doc>

文書C

<doc>
  <basic expense="出張費不要">
    :
  </basic>
  <detail>
    :
    <taxi>3750円</taxi>
    :
  </detail>
</doc>

文書D

<doc>
  <basic expense="480円">
    :
  </basic>
  <detail>
    :
    <taxi>7400円</taxi>
    :
  </detail>
</doc>

例1

タクシー代(taxi)の安い順(昇順)にソートします。
val(/doc/detail/taxi/text())

結果:文書A、C、D、Bの順に返却されます。

例2

出張費用(expense)の安い順(昇順)にソートします。
val(/doc/basic/@expense)

結果:文書C、D、A、Bの順に返却されます。

テキスト式で指定したXML文書中のテキストノードの文字列に数字を含まない場合は、val関数はその値を0とみなします。この例では、文書Cの出張費用は0として扱われています。
また、テキスト式で指定したXML文書中のテキストノードがない場合は、そのXML文書は最後に返却されます。

数値の大きい順(降順)にソートしたい場合は、キー指定のあとに“DESC”を指定します。

例3

タクシー代(taxi)の高い順(降順)にソートします。
val(/doc/detail/taxi/text()) DESC

結果:文書 B、D、C、Aの順に返却されます。

例4

出張費用(expense)の高い順(降順)にソートします。
val(/doc/basic/@expense) DESC

結果:文書 B、A、D、Cの順に返却されます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006