データベースに格納したXMLデータを検索するために、あらかじめXMLデータの構造の中で検索の対象とする部分を定義します。XMLデータの構造の中で検索対象とする部分のことを検索パスと呼びます。XMLデータを検索する際に使用する、CONTAINS関数の検索条件に検索パスを指定することで、目的の構造がもつ値を特定することができます。
XMLデータを構成するすべての構造を検索パスとして定義することもできますが、一般的な業務では検索の対象は特定できます。特定した検索の対象に対応する検索パスだけを定義することで、効率的にXMLデータのインデックスを作成できます。
検索パスの定義は1つ以上の検索パスの集合として定義します。この定義する検索パスの集合をXMLグループと呼び、CREATE XMLGROUP文で定義します。
以下に格納するXMLデータ、検索パス、XMLグループの関係を示します。
図1.10 検索パスとXMLグループ
/[受注伝票/伝票番号 = 100] :検索可能
/[受注伝票/商品/個数 > 50] :検索可能
/[受注伝票/発注先 = ‘富士通’ ] : 検索不可(検索パスとして未定義)
この図では、格納するXML文書のうち、円で囲んだ部分だけを利用者が検索条件に指定するものとしています。この場合、格納するXML文書に対して以下の3種類の検索パスをもつことになります。これらの検索パスは、XMLグループとして定義します。
/受注伝票/伝票番号
/受注伝票/商品/商品番号
/受注伝票/商品/個数
注意
XMLグループとして定義しない部分、「受注伝票/受注先/コード」と「受注伝票/受注先/社名」は、検索条件に指定できません。
XMLグループは、すでに定義しているXMLデータのインデックスのDSO(XML構造のDSO)に対して定義します。
以下にXMLグループの定義の記述例を示します。
これは、「伝票IXDSO」というXMLデータのインデックスのDSO(XML構造のDSO)に対して、「受注伝票GR」というXMLグループを定義しています。XMLグループは、「/受注伝票/伝票番号」、「/受注伝票/商品/商品番号」、「/受注伝票/商品/個数」という検索パスの集合で定義されます。
ここで、業務の変更や拡張により検索の範囲が拡大した場合、XMLグループに検索パスを追加できます。XMLグループに対しての検索パスの追加は、以下に示すようにALTER XMLGROUP文で定義します。
ALTER XMLGROUP 受注伝票GR ON 伝票IXDSO ADD PATH '/受注伝票/発行先/社名' STRING(20);