サーチ…


備考

XPath ロケーションパスは、 / characterで区切られた一連のロケーションステップです

step1/step2/step3

ロケーション・ステップには、 ノード・テスト 、およびオプションの述部リストが含まれていますノードテストは 、二つのコロン文字によって分離されている::述部は角カッコで囲まれています。

axis::nodeTest[predicate1][predicate2]

ロケーションパスの評価は、式のコンテキストによって与えられるコンテキストノードを含むノードセットから始まり、ロケーションパスが/始まる場合はルートノードから始まります。各ステップで、元のノード集合内の各ノードNは、

  • 与えられた軸に沿って Nから到達することができ、
  • ノードテストと一致し、
  • すべての述語に一致します。

ロケーションパス式の結果は、すべてのロケーションステップを処理した後に得られた最終ノードセットです

子要素をトラバースする

child軸を使用してルートノードから子孫要素に移動する:

/child::html/child::body/child::div/child::span

child軸がデフォルトの軸であるため、これは省略可能です:

/html/body/div/span

すべての子孫をトラバースする

descendantおよびdescendant-or-self軸は、任意の深さのノードのすべての子孫要素を見つけるために使用できます。これとは対照的に、 child軸にのみ直接の子を横断します。

/child::html/descendant::span
/child::html/descendant-or-self::*

ダブルスラッシュ//ショートカットです/descendant-or-self::node()/ 。したがって、次の式は等価です。

table//td
child::table/descendant-or-self::node()/child::td
child::table/descendant::td
table/descendant::td

祖先を横断する

parent軸には、ノードの親だけが含まれます。次の式は、 body要素を迂回してhtml要素を選択します。

/child::html/child::body/parent::html

..parent::node()ショートカット..

ancestorancestor-or-self軸は、ノードのすべての祖先を横断します。次の式は、コンテキストノードの祖先であるすべてのdiv要素を返します。

ancestor::div

「自己」軸

self軸には、コンテキストノード自体だけが含まれます。式. self::node()ショートカットであり、常にコンテキストノードに一致します。 .ショートカットはコンテキストノードの子孫を列挙するのに便利です。次の式は等価です。

.//span
self::node()/descendant-or-self::node()/child::span
descendant::span

self軸は、XPath 1.0述語で役立ちます。たとえば、コンテキストノードのすべてのh1h2 、およびh3子を選択するには、次のようにします。

*[self::h1 or self::h2 or self::h3]

後続ノードと先行ノードを横断する

following-siblingおよびpreceding-sibling軸には、コンテキストノードの前後にある兄弟が含まれ、 following軸およびpreceding軸には、コンテキストノードの前後にあるドキュメント内のすべてのノードが含まれますが、

  • これらの軸のいずれも属性または名前空間ノードを含んでいません。
  • following軸には子孫が含まれていません。
  • preceding軸には祖先は含まれていません。

例:

following::span[1]
following-sibling::*[last()]

属性および名前空間ノードのトラバース

attributeおよびnamespace軸には、要素のすべての属性および名前空間ノードが含まれます。ショートカット@attribute::略語なので、以下は同じです:

child::div/attribute::class
div/@class


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow