XPath の軸 |
 |
XPath 仕様では 13 個の異なる軸が定義されていて、各軸にはさまざまなノードが含まれています。特定の軸のノードは、コンテキストノードに依存します。ここでは、13 個すべての軸について、第 3 章 3.1 節にある詳しい説明から抜粋して説明します。
-
child 軸
-
コンテキストノードの子が含まれます。既に説明したように、XPath 式 child::lines/child::line と lines/line は同等です。 /sonnet などの XPath 式に軸指定子がない場合は、デフォルトで child 軸が使用されます。
-
parent 軸
-
コンテンツノードの親がある場合は、その親が含まれます。コンテンツノードがルートノードの場合、親軸は空のノードセットを返します。この軸は、2 つのピリオド ( .. ) で短縮できます。式 parent::sonnet と ../sonnet は同等です。コンテキストノードに親として < sonnet > 要素がない場合、これらの XPath 式は空のノードセットを返します。
-
self 軸
-
コンテキストノードそのものが含まれます。 self 軸は、1 つのピリオド ( . ) で短縮できます。
-
attribute 軸
-
コンテキストノードの属性が含まれます。コンテキストノードが要素ノードでない場合、この軸は空になります。 attribute 軸は、1 つのアットマーク ( @ ) で短縮できます。式 attribute::type と @type は同等です。
-
ancestor 軸
-
コンテキストノードの親、親の親、のように含まれます。 ancestor 軸には、コンテキストノードがルートノードでない限り、常にルートノードが含まれます。
-
ancestor-or-self 軸
-
コンテキストノード、その親、親の親、のように含まれます。この軸には常にルートノードが含まれます。
-
descendant 軸
-
コンテキストノードのすべての子、コンテキストノードのすべての子のすべての子、のように含まれます。 descendant 軸には属性ノードまたは名前空間ノードが含まれません。既に説明したように、属性ノードがその親の子であると見なされない場合でも、属性ノードには親としての要素ノードがあります。
-
descendant-or-self 軸
-
コンテキストノードおよびコンテキストノードのすべての子、コンテキストノードのすべての子のすべての子、のように含まれます。
-
preceding-sibling 軸
-
コンテキストノードの前のすべての兄弟が含まれます。つまり、コンテキストノードと同じ親を持ち、XML ドキュメントでコンテキストノードの前に表示されるすべてのノードが含まれます。コンテキストノードが属性ノードまたは名前空間ノードである場合、 preceding-sibling 軸は空です。
-
following-sibling 軸
-
コンテキストノードの後のすべての兄弟が含まれます。つまり、コンテキストノードと同じ親を持ち、XML ドキュメントでコンテキストノードの後に表示されるすべてのノードが含まれます。コンテキストノードが属性ノードまたは名前空間ノードである場合、 following-sibling 軸は空です。
-
preceding 軸
-
先祖ノード、属性ノード、および名前空間ノードを除き、ドキュメントでコンテキストノードの前にあるすべてのノードが含まれます。
-
following 軸
-
子孫ノード、属性ノード、および名前空間ノードを除き、ドキュメントでコンテキストノードの後にあるすべてのノードが含まれます。
-
namespace 軸
-
コンテキストノードの名前空間ノードが含まれます。コンテキストノードが要素ノードでない場合、この軸は空になります。
5 つの軸 (ancestor、descendant、following、preceding、および self) は、属性ノードまたは名前空間ノードの例外を除き、XML ドキュメント内のすべてをパーティション化します。XPath ツリーのノードはこれら 5 つの軸のいずれかに表示され、5 つの軸が重なることはありません。
|