パスとは、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