検索式でヒットしたXML文書を任意のキーでグループ化します。グループ化を行うキーは、ソート式に指定します。
XML文書中の任意の要素ノードまたはその要素ノードの属性ノードの値でグループ化を行うことができます。文字列でグループ化を行う場合は、ソート式のキー指定にテキスト式または属性式を指定します。
例として以下の文書があるものとします。
文書A
<doc> <employee eno="19980120" position="general manager"> : <name>鈴木太郎</name> : </employee> : <detail> : <destination area="愛知県名古屋市千種区覚王山">愛知支店</destination> : </detail> : </doc>
文書B
<doc> <employee eno="19980120" position="general manager"> : <name>鈴木太郎</name> : </employee> : <detail> : <destination area="東京都千代田区八重洲">東京支店</destination> : </detail> : </doc>
文書C
<doc> <employee eno="20012111" position="manager"> : <name>佐藤花子</name> : </employee> : <detail> : <destination area="東京都千代田区八重洲">東京支店</destination> : </detail> : </doc>
文書D
<doc> <employee eno="20012111" position="manager"> : <name>佐藤花子</name> : </employee> : <detail> : <destination area="愛知県名古屋市千種区今池">愛知支社 </destination> : </detail> : </doc>
従業員氏名(name)でグループ化します
/doc/employee/name/text()
結果:文書AとBが1つのグループ、文書CとDが1つのグループとして扱われます。
地位(position)でグループ化します。
/doc/employee/@position
結果:文書AとBが1つのグループ、文書CとDが1つのグループとして扱われます。
ポイント
文字列でグループ化を行う場合、文字列の先頭20バイトをキーにしてグループ化します。キー指定が示すXML文書中の値が20バイトよりも大きくなる可能性がある場合は、20バイト目以降が異なる文字列であるのに同一グループとみなされることがあります。このような場合は、キー指定にrlen関数を指定して、先頭から何文字をキーとするかを指定できます。
rlen関数の詳細については、“B.2.4 単一行関数指定”を参照してください。
出張エリア(area)でグループ化したい場合
rlen(/doc/detail/destination/@area,30)
上記のように指定すると、出張エリアの先頭から30文字でグループ化します。
XML文書の任意の要素ノードまたはその要素ノードの属性ノードの値を数値とみなしてグループ化します。数値でグループ化するには、ソート式のキー指定に単一行関数指定のval関数を指定します。val関数の引数には、テキスト式または属性式を指定します。
val関数の詳細については、“B.2.4 単一行関数指定”を参照してください。
例として以下の文書があるものとします。
文書A
<doc> <employee> : <department sno="2001">開発部</department> : </employee> : </doc>
文書B
<doc> <employee> : <department sno="2002">人事部</department> : </employee> : </doc>
文書C
<doc> <employee> : <department sno="2001">開発部</department> : </employee> : </doc>
文書D
<doc> <employee> : <department sno="2002">人事部</department> : </employee> : </doc>
部署番号(sno)が同じXML文書をグループ化したい場合
val(/doc/employee/department/@sno)
結果:文書AとCが1つのグループ、文書BとDが1つのグループとして扱われます。
複数のキーでグループ化するには、ソート式に“,”で区切って複数のキー指定を指定します。それぞれのキー指定は、数値でも文字列でもかまいません。複数のキー指定を指定すると、指定したすべてのキー指定の値が同じであるXML文書を1つのグループとして扱います。キー指定は8個まで指定できます。
例として以下の文書があるものとします。
文書A
<doc> <basic date="2006年03月03日"> : </basic> <detail> : <destination area="神奈川県">本社</destination> : </detail> : </doc>
文書B
<doc> <basic date="2006年03月03日"> : </basic> <detail> : <destination area="神奈川県">本社</destination> : </detail> : </doc>
文書C
<doc> <basic date="2006年03月10日"> : </basic> <detail> : <destination area="神奈川県">本社</destination> : </detail> : </doc>
出張先(destination)と出張日(date)でグループ化します
/doc/detail/destination/text(),/doc/basic/@date
結果:文書AとBが1つのグループ、文書Cが1つのグループとして扱われます。