ページの先頭行へ戻る
Symfoware Server V12.7.0 RDB運用ガイド(XMLアダプタ編)
FUJITSU Software

5.3.5 再帰的に絞り込む

フィルタは、XML検索式を表すパスであるXMLデータに対してだけでなく、フィルタ中のパスの任意の要素や属性に対しても指定できます。

このようなフィルタの再帰的な指定を使用することで、複雑な階層や繰り返し構造をもつXMLデータに対して、柔軟な絞込み条件の指定を行うことができます。

以下の2つの条件をXML検索式で表します。

/[電話帳/個人/@性別 = " 男性"  and 電話帳/個人/名前 =" 田中" ]

上記のXML検索式は、“繰り返し構造をもつXMLデータ”のXMLデータ1とXMLデータ2の両方に一致する条件となります。

また、「性別が“男性”である“田中”さんが、所属する支社の電話帳」に対して、一致する条件を指定したい場合は、以下のように要素“個人”に対してフィルタを指定します。

/[電話帳/個人[@性別 = " 男性" ]/名前 = " 田中" ]

上記のXML検索式は、“繰り返し構造をもつXMLデータ”のXMLデータ2にだけ一致します。

フィルタを要素や属性に対して指定した場合は、フィルタ内の相対パスは、フィルタを付加した要素や属性からの相対指定となります。

繰り返し構造をもつXMLデータ
XMLデータ1
<?xml version='1.0' encoding='UTF-16' ?>
<電話帳 支社='東京'>
  <代表>03-xxxx-yyyy</代表>
  <個人 性別='女性'>
    <名前>田中</名前>
    <番号>03-xxxx-yyyy</番号>
  </個人>
  <個人 性別='男性'>
    <名前>鈴木</名前>
    <番号>03-xxxx-yyyy</番号>
  </個人>
  <個人 性別='男性'>
    <名前>佐藤</名前>
    <番号>03-xxxx-yyyy</番号>
  </個人>
</電話帳>
XMLデータ2
<?xml version='1.0' encoding='UTF-16' ?>
<電話帳 支社='名古屋'>
  <代表>052-xxx-yyyy</代表>
  <個人 性別='男性'>
    <名前>田中</名前>
    <番号>052-xxxx-yyyy</番号>
  </個人>
  <個人 性別='男性'>
    <名前>林</名前>
    <番号>052-xxxx-yyyy</番号>
  </個人>
  <個人 性別='女性'>
    <名前>森</名前>
    <番号>052-xxx-yyyy</番号>
  </個人>
</電話帳>