データベースに格納したXMLデータを検索するために、利用者は、業務開始前にXMLデータのなかで検索の対象となる部分(検索パス)を定義しておきます。
以下の図の(a)に示すXMLデータを例に検索パスの考え方を説明します。
図2.10 検索パスの考え方
図の(b)のように、XMLデータの要素名(タグ名)または属性名をノード、要素値または属性値をリーフとする木構造表現で考えます。
業務で検索が必要となる値を決定します。この値まで達する要素(またはノード)名を検索パスと表現します。たとえば、図の(b)では、以下の値を業務で検索することとします。(図中網掛けのノード)
「受注伝票」要素下の「伝票番号」要素値
「受注伝票」要素下の「受注先」要素下の「社名」要素値
「受注伝票」要素下の「商品」要素下の「商品名」要素値
「受注伝票」要素下の「商品」要素がもつ「DISK」属性値
定義した検索パス以外の要素、属性は、検索の対象となりません。
検索パスは、“/”で始まり、要素間を“/”で区切る文字列として表します。図の(b)の例で規定する検索パスは、以下のように表します。
/受注伝票/伝票番号
/受注伝票/受注先/社名
/受注伝票/商品*/商品名
/受注伝票/商品*/@DISK
検索パスの表現で、要素が繰り返し出現する場合、要素名の後ろに“*”を付加することで、要素が繰り返し出現することを表します。図の(b)の例では、「商品」要素が繰り返し出現します。このため、「商品」要素を含む検索パスは、以下のように記述します。
/受注伝票/商品*/商品名
検索パスの表で、属性名を表す場合、属性名の前に“@”を付加することで、それが属性であることを表します。図の(b)の例では、「DISK」属性が該当します。これは、以下のように記述します。
/受注伝票/商品/@DISK
検索パスを定義する場合、検索パスに該当するXMLデータの値(要素値)の型も定義します。ここで定義した型の記述形式に一致した要素値だけが検索の対象となります。
以下にNUMBER型、DATE型での要素値の型と表現範囲を示します。
型 | 記述形式 | 値の範囲 |
---|---|---|
NUMBER(p,q) | 形式:[-]<符号なし整数>.<符号なし整数> | -10^(p-q) + 10^(-q) ~ |
DATE | 日付値:<年>-<月>-<日>[T<時>:<分>:<秒>] | |
p:精度 q:位取り
XMLグループは、CREATE XMLGROUP文により定義できます。以下にCREATE XMLGROUP文の記述形式を説明します。なお、CREATE XMLGROUP文の詳細は、“付録A SQL文の記述形式”を参照してください。
CREATE XMLGROUP 受注伝票GR ON 伝票IXDSO ( (1) (2) '/受注伝票/伝票番号' NUMBER (10,0), (3) (4) |------------------- (5) --------------------| '/受注伝票/受注先/社名' STRING (20), '/受注伝票/商品*/商品名' STRING (20), '/受注伝票/商品*/@DISK' NUMBER (2,0) ) RULE (伝票種別) = ('1'); (6)
(1)XMLグループ名
(2)DSO名
(3)パス
(4)型指定
(5)パス定義
(6)選択条件
複数のXMLグループがDSOに対して定義されている場合、BLOB型の列に格納したXMLデータがどのXMLグループに属するのかを決めるためのルールを指定します。詳細は、“2.3.2 選択条件の設計”を参照してください。