XPath ノードタイプ

XPath には 7 つのタイプのノードがあります。ここでの説明は参考情報にとどめます。さまざまなノードタイプの詳細については、前の「XPath data model」を参照してください。

ルートノード  
 

ルートノードはツリーのルートです。他のすべてのノードとは異なり、このノードには親がありません。このノードの子はドキュメントの要素ノードであり、ドキュメント要素外に表示されるコメントや処理命令が含まれます。ルートノードには拡張名はありません。

要素ノード  
 

元の XML ドキュメントの各要素は要素ノードで表されます。要素の拡張名はローカル名で、その要素で有効な名前空間と組み合わされます。name()local-name()、および namespace-uri() 関数を使用して、要素名の別の部分にアクセスできます。 XML ドキュメントの要素を次に示します。

<xyz:report xmlns:xyz="http://www.xyz.com/">

この要素ノードの 3 つの関数の値は次のとおりです。

name()
xyz:report

local-name()
report

namespace-uri()
http://www.xyz.com/

属性ノード  
 

XML ドキュメント内の要素の属性が XPath 属性ノードになります。属性には、要素ノードと同じように拡張名があります。特定の要素ノードの属性ノードは、XML 要素および DTD で初期設定値を使用して定義された属性上で明示的に記述された属性です。

ドキュメントオブジェクトモデルから別の観点で見ると、要素ノードはその属性の親になります。ただし、属性はその要素の子ではありません。つまり、要素ノードのすべての子を選択しても、要素ノードが持っている属性ノードは選択されません。

テキストノード  
 

テキストノードには要素内のテキストが含まれます。XML ドキュメントの元のテキストに文字またはエンティティ参照が含まれている場合、それらは XPath テキストノードが作成される前に解決されます。同様に、既存の CDATA セクションはテキストノードとして表示されます。テキストノードの特定の部分が、元は文字、エンティティ参照、または CDATA セクションであるかどうかを知る方法はありません。

コメントノード  
 

コメントノードも非常に単純で、テキストが含まれています。ソースドキュメントのすべてのコメントは、DTD のコメントを除き、コメントノードになります。text() ノードテストで返されるコメントノードのテキストには、開く <!-- と閉じる --> を除いてコメント内のすべてのものが含まれます。

処理命令ノード  
 

処理命令ノードには、name() 関数が返す名前と文字列値の 2 つの部分があります。文字列値は名前の後のすべての部分で、空白スペースを含みますが、処理命令を閉じる ?> は含まれません。

名前空間ノード  
 

名前空間ノードが XSLT スタイルシートで使用されることはほとんどありません。このノードは、主に XSLT プロセッサ用に存在します。1 つ注意することは、名前空間の宣言 (xmlns:auth="http://www.authors.net" など) は技術的には XML ソースの要素ですが、名前空間ノードになり、属性ノードにはならないことです。名前空間ノードは、定義される名前空間の接頭辞と、任意のデフォルト名前空間の両方に対して存在します。