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

6.3 パス

パスとは、XMLノードツリー中の特定のノードまたはノードの集合を指すための記述です。

パスは、XML検索式によって取り出すノードを特定し、絞り込む条件の対象となるノードを指定するために使用します。

パスの定義を以下に示します。

パス       ::= 絶対パス | 相対パス
絶対パス   ::= ルート | パス演算子 相対パス
相対パス   ::= パス要素 | パス要素 パス演算子 相対パス

パス演算子 ::= '/' | '//'

ルート     ::= '/' | '/' フィルタ
パス要素   ::= 単純要素 | 単純要素 フィルタ

単純要素   ::= '.' | '*' | '@*' | エレメント名 | '@' 属性名

パスは、ファイルシステム上のファイルをパス名によって特定するのと似た方法で、XMLノードツリー中のノードを特定します。

エレメントノードまたは属性ノードの名前を、パス演算子“/”で順に連結することで、あるノードの子ノードを特定します。

絶対パス指定

パスの先頭が“/”で始まる場合は、ルートエレメントからのパス指定となります。“/”だけで示したパスはXMLデータノード、つまり、XMLデータ自身を指します。

たとえば、以下のパスは「ルートエレメントである“Aエレメント”配下にある、“Bエレメント”」を表しています。

/A/B

属性ノードの名前を指定する場合は、属性名の先頭に“@”を付加して指定します。

たとえば、以下のパスは「ルートエレメントである“Aエレメント”の“属性C”」を表します。

/A/@C

パス演算子として“/”ではなく“//”を使用した場合は、演算子の左辺で示すノード配下の任意の階層にあるノードを示します。

たとえば、以下のパスは“/A/B/D”にも“/A/D”にも一致します。

A//D

パスが“//”で始まる場合は、XMLデータ中の任意の位置にあるノードを示します。

相対パス指定

パス要素に“.”を指定すると、カレントノードを示します。カレントノードは、XML検索式の文脈によって決定し、パスの途中で“.”を指定した場合は、カレントノードは、パス演算子の左辺で示すノード自身となります。

したがって、以下のパスの記述はどちらも等価になります。

/A/B
/A/./B
/./A/B

パスの先頭が、“.”で始まる場合は、カレントノードは、そのパスを解釈する文脈で決まります。

XMLアダプタでは、XML検索式指定時のカレントノードはXMLデータノードであるので、以下の2つのXML検索式は等価になります。

/
.

パスの先頭の“./”は省略可能です。“/”または“.”で始まらないパスは、先頭に“./”を補って解釈します。

たとえば、以下の2つのパスは等価になります。

./A
A
任意のエレメントまたは任意の属性の指定

パスの要素として“*”を使用した場合は、その階層のすべてのエレメントノードを示します。また、パスの要素として“@*”を使用した場合は、その階層のすべての属性ノードを示します。

たとえば、以下のパスは「Aエレメント配下の全属性」を表します。

A

以下のパスは、「Aエレメント配下の孫エレメントであるCエレメント」を表します。

A/*/C
名前空間の扱い

XML検索式はデータベースに格納しているXMLデータの要素や属性の名前空間を意識しません。

パスに指定した要素名や属性名をローカル名としてもつ要素や属性は、どのような名前空間にある名前であってもパスの対象となります。