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 つの軸が重なることはありません。