名前のテスト
名前のテストは、ノード テストの最も一般的な形態です。これは、選択したいノードの名前を明示的に指定できるためです。 だたし、ノードの名前を指定するだけで自動的に適切なノードが選択されるわけではありません。これは、ドキュメント ツリーには同じ名前を持つ異なるノード型があるためです。 適切なノードを選択するため、ノード テストは、ノード名が指定された名前と一致し、ノード型が指定された軸のプリンシパル ノード型に一致するノードだけを選択します。
以下の表は、さまざまな軸のプリンシパル ノード型の一覧です。
軸 | プリンシパル ノード型 |
---|---|
|
要素 |
属性 |
属性 |
名前空間 |
名前空間 |
名前のテストには、アスタリスク (*)、QName、式 NCName:*
のいずれかの種類の名前を指定します。 以下の表は、特定のノードセットを検索するために、これら名前の種類が指定された軸とどのように連動して機能するかを示しています。
名前 | 戻り値 | 例 |
---|---|---|
* (アスタリスク) |
プリンシパル ノード型のノードすべてについて True。 |
|
QName |
展開された名前が QName によって指定された展開名と一致するプリンシパル ノード型のノードすべてについて True。 |
|
NCName ; * |
ローカル名とは無関係に、展開された名前が NCName の展開対象の名前空間 URI を持つプリンシパル ノード型のノードすべてについて True。 |
|
解説
ノード テストが QName の場合、XPath は最初に XML ファイル内のコンテキスト名前空間宣言に基づいて QName を展開する必要があります。 この展開処理は、開始タグと終了タグ内の要素名に対する展開処理と同じです。ただし、xmlns
で宣言された既定の名前空間は使用されません。 QName がプレフィックスを持たない場合、XPath は、ローカル名が与えられた QName に一致し、名前空間 URI が null のノードを探します。 QName のプレフィックスがファイル内のコンテキスト名前空間宣言のいずれにも対応しない場合は、エラーになります。
ノードのテストが NCName : * の場合、XPath は QName のプレフィックスを展開するのと同じ方法で NCName を展開します。 同様に、NCName 部がファイル内のコンテキスト名前空間宣言に含まれているプレフィックスのいずれにも対応しない場合は、エラーになります。