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

|
B.5.1 ソート式の書式
ソート式には、テキスト式、属性式または単一行関数指定が指定できます。それぞれに対して取出し順序(昇順または降順)を指定できます。“,”で区切って複数指定することができます。
ソート式の定義を以下の図に示します。
[図:ソート式の定義]


ソート式には、キー指定を8個まで指定できます。
以下にソート式で定義する項目について説明します。
テキスト式は、ソートを行うキーとなるテキストノードを指定します。
テキスト式の詳細については、“B.2.2 テキスト式”を参照してください。
- テキスト式中にパス演算子“//”は指定できません。
- テキスト式中にパス要素“*”は指定できません。
例
/company/employee/dept/text() |
単一行関数指定は、単一行関数の結果でソートを行いたい場合に指定します。
単一行関数指定の詳細については、“B.2.4 単一行関数指定”を参照してください。
例1
rlen(/company/name/text(),16) |
例2
rlen(/company/employee/@position,16) |
属性式は、ソートを行うキーとなる属性ノードを指定します。
属性式の詳細については、“B.2.3 属性式”を参照してください。
- 属性式中にパス演算子“//”は指定できません。
- 属性式中にパス要素“*”は指定できません。
- 属性式で指定する属性名に“*”は指定できません。
例
/company/employee/@position |
結果を降順で返却する場合に指定します。省略した場合は昇順に返却されます。
例
/company/employee/dept/text() DESC |
◆テキスト式で行う場合
- テキスト式を指定すると、テキスト式が示すテキストノードが持つ文字列でソートを行います。
- テキスト式で指定したテキストノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合はrlen関数を利用して文字数を変更します。指定できる文字数は1~128です。
- テキスト式で指定したテキストノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。
- テキスト式で指定したテキストノードが同一文書中に複数存在する場合は、先頭のテキストノードを利用します。
- テキスト式で指定したテキストノードが文書中にない場合は、取出し順序の指定にかかわらず、最後に返却します。
- 数値としてソートしたい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、桁合わせの必要がありません。
◆属性式で行う場合
- 属性式を指定すると、属性式が示す属性ノードが持つ文字列でソートを行います。
- 属性式で指定した属性ノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合はrlen関数を利用して文字数を変更します。指定できる文字数は1~128です。
- 属性式で指定した属性ノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。
- 属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭の属性ノードを利用します。
- 属性式で指定した属性ノードが文書中にない場合は、取出し順序の指定にかかわらず、最後に返却します。
- 数値としてソートしたい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、桁合わせの必要がありません。
例
以下に示す2つの文書を文字列としてソートすると“100”よりも“20”の方が大きくなります。ソート式にval(/value/text())と指定すると、100および20といった数値でソートするため、20よりも100の方が大きくなります。
◆テキスト式の場合
- テキスト式を指定すると、テキスト式が示すテキストノードが持つ文字列が同じ文書を、1つのグループとして扱います。
- テキスト式で指定したテキストノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合は、rlen関数を利用して文字数を変更します。指定できる文字数は1~128です。
- テキスト式で指定したテキストノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。
- テキスト式で指定したテキストノードが同一文書中に複数存在する場合は、先頭のテキストノードを利用します。
- テキスト式で指定したテキストノードが文書中にない場合は、値のないグループキーを持つ1つのグループとして扱います。
- 数値をキーとして集計したい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、文字列に数値以外を含む場合や、小数点以下の位取りが異なる場合でも、数値が同じものは同じグループとして扱うことができます。
◆属性式の場合
- 属性式を指定すると、属性式が示す属性ノードが持つ文字列が同じ文書を、1つのグループとして扱います。
- 属性式で指定した属性ノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合は、rlen関数を利用して文字数を変更します。指定できる文字数は1~128です。
- 属性式で指定した属性ノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。
- 属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭の属性ノードを利用します。
- 属性式で指定した属性ノードが文書中にない場合は、値のないグループキーを持つ1つのグループとして扱います。
- 数値をキーとして集計したい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、文字列に数値以外を含む場合や、小数点以下の位取りが異なる場合でも、数値が同じものは同じグループとして扱うことができます。
例
以下に示す2つの文書を/doc/key/text()をキーとして集計すると、それぞれ別グループになります。ソート式にval(/doc/key/text())と指定すると、どちらも1000という数値として扱うため同じグループとして集計します。
<doc>
<key>net1000.00g</key>
<ship>2000個</ship>
</doc> |
<doc>
<key>1,000g</key>
<ship>1000個</ship>
</doc> |
All Rights Reserved, Copyright(C) 富士通株式会社 2006