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 つの軸 (ancestordescendantfollowingpreceding、および self) は、属性ノードまたは名前空間ノードの例外を除き、XML ドキュメント内のすべてをパーティション化します。XPath ツリーのノードはこれら 5 つの軸のいずれかに表示され、5 つの軸が重なることはありません。