ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

B.4.2 集計を行わない場合のリターン式指定例

以下にリターン式の例を示します。


文書

<doc>
  <companyname>fujitsu</companyname>
  <employee position="manager">
    <name>tanaka</name>
    <id>2000</id>
    <age>30才</age>
  </employee>
</doc>

返信される形式ごとの指定例を以下に示します。


XML形式の返却指定

リターン項目にパス式を指定した場合、該当する要素ノードをXML形式で返信します。

リターン項目に複数のパス式を指定した場合、指定した順に要素を返信します。

文書ごとにルートタグで囲んで返信します。

該当する要素が存在しない場合、要素は返信されません。


例1

リターン式

/

結果:レコード全体を返信します。

<doc>
  <companyname>fujitsu</companyname>
  <employee position="manager">
    <name>tanaka</name>
    <id>2000</id>
    <age>30才</age>
  </employee>
</doc>

例2

リターン式

/doc/employee/name

結果

<doc><name>tanaka</name></doc>

例3

リターン式

/doc/employee

結果

<doc><employee position="manager"><name>tanaka</name><id>2000</id><age>30才</age></employee></doc>

例4

リターン式

/doc/companyname,/doc/employee/id

結果

<doc><companyname>fujitsu</companyname><id>2000</id></doc>

注意

  • リターン式にパス式を記述する場合は、すべてのリターン項目がパス式である必要があります。テキスト式、属性式または単一行関数指定と混在して指定できません。

  • リターン項目に複数の要素が該当するような指定(複数のパス式指定や、“//”,“*”の指定)をした場合、以下のように、取り出された各要素の対応関係をアプリケーションで判断できなくなります。このような場合、XML文書全体を取り出すか、リターン項目に1つの要素を特定する指定にして取り出してください。

例1

一部の要素が存在しない場合、どの要素が存在しないのか判断できません。

この例では、/doc/president/nameが存在しないため、/doc/employee/nameだけが返却されます。このように、返却された要素が/doc/president/nameなのか、/doc/employee/nameなのか判断できません。


リターン式

/doc/president/name,/doc/employee/name

結果

<doc><name>tanaka</name></doc>

例2

取り出された要素のパスが判断できません。

この例では、どちらのname要素が、/doc/president/nameなのか/doc/employee/nameなのか判断できません。


文書

以下のXML文書がヒットしたものとして説明します。

<doc>
 <companyname>fujitsu</companyname>
  <president>
    <name>kurokawa</name>
    <id>1849</id>
    <age>61才</age>
  </president>
  <employee>
    <name>tanaka</name>
    <id>2000</id>
    <age>30才</age>
  </employee>
</doc>

リターン式

//name

結果

<doc><name>kurokawa</name><name>tanaka</name></doc>

テキスト形式の返却指定

リターン項目にテキスト式、属性式または単一行関数指定を指定した場合、該当するテキスト式、属性式または単一行関数指定の結果を文字列で返信します。

リターン項目に複数のパス式を指定した場合、指定した順に文字列を返信します。

該当する要素が存在しない場合は、空エントリとして区切り文字で区切られます。


例1 リターン項目の例

リターン式

/doc/employee/name/text()

結果

Java APIの場合

tanaka

C APIの場合

tanaka \1

例2 リターン項目に属性式を指定した場合の例

リターン式

/doc/employee/@position

結果

Java APIの場合

manager

C APIの場合

manager \1

例3 リターン項目にテキスト式、単一行関数指定、属性式を混在した場合の例

リターン式

/doc/employee/name/text(),val(/doc/employee/age/text()),/doc/employee/@position

結果

Java APIの場合

tanaka,30,manager

C APIの場合

tanaka \1 30 \1 manager \1

注意

リターン式に複数の要素が該当するような指定(複数のパス式指定や、“//”,“*”の指定など)をした場合、取り出された各要素の対応関係をアプリケーションで判断できなくなります。

以下の文書では、suzukiには“age要素ノード”がないため、3つ目のリターン項目に対する結果の“30”が、tanakaのデータなのか、suzukiのデータなのかわかりません。


文書

<doc>
  <companyname>fujitsu</companyname>
  <employee>
    <name>tanaka</name>
    <id>2000</id>
    <age>30才</age>
  </employee>
  <employee>
    <name>suzuki</name>
    <id>1000</id>
  </employee>
</doc>

リターン式

/doc/companyname/text(),/doc/employee/name/text(),val(/doc/employee/age/text())

結果

Java APIの場合

fujitsu,tanaka|suzuki,30

C APIの場合

fujitsu \1 tanaka \2 suzuki \1 30 \1