2

XPath 式は、要素または要素属性のいずれかのみを指す/選択できると考えるのは正しいですか?

4

3 に答える 3

7

W3C の XPath ドキュメントによると:

式が評価されて、次の 4 つの基本型のいずれかを持つオブジェクトが生成されます。

  • node-set (重複のない順序付けられていないノードのコレクション)
  • ブール値 (真または偽)
  • 数値 (浮動小数点数)
  • 文字列 (一連の UCS 文字)

ノードはドキュメント ツリーの要素であるため、要素ノード、属性ノード、およびテキスト ノードを含めることができます。また、XPath 式は、単一のノードだけでなく、多数のノード (つまり、多数の要素) を選択できることに注意してください。

いくつかの例:

  • //monkey-<monkey>ドキュメント内のすべての要素、ノードセットを選択します
  • count(//monkey)<monkey>- すべての要素の数、数値を返します
  • contains("mouse", "cat")- false、ブール値を返します
  • (//monkey)[0]/text()<monkey>- 最初の要素である文字列からテキストを返します
于 2009-11-12T17:10:51.113 に答える
1

Dave Webb によって現在受け入れられている回答は、部分的にしか正しくありません

7 種類のノードすべてを選択できます

  • ルート(ドキュメント ノード)、のように"/"
  • Elements、次のように:"/*"
  • 次のような属性:"//@*"
  • 次のようなテキスト ノード"//text()"
  • 以下のようにノードをコメントします。"//comment()"
  • 次のような命令ノードの処理:"//processing-instruction()"
  • 次のような名前空間ノード"//namespace::*"

また、特定の XPath エンジンのホストによっては、選択したノード セットに複数のドキュメントのノードが含まれる場合があることも知っておくとよいでしょう。たとえば、ホストが XSLT の場合、次の XPath 式:

"document($uri1)//* | document($uri2)//*"

$uri1で識別されるドキュメント内のすべての要素と、 で識別されるドキュメント内のすべての要素の和集合を選択し$uri2ます。

選択したノードセット内のノードの順序は「ドキュメント順」(深さ優先) ですが、これは同じドキュメントに属するノードにのみ適用されます。複数のドキュメントに属するノードが選択された場合、異なるドキュメントに属するノード間の順序は定義されません (実装依存)。

最後に、XPath 2.0 では、選択は任意のタイプのアイテムのシーケンス (場合によっては混合) (および定義済みの順序を持​​つ) である可能性があり、(ユーザー定義のタイプが使用されている場合) 以下を含むアイテム タイプのセットが無制限になる可能性があります。すべての組み込み XML スキーマ タイプ。

XPath 2.1 (W3C ワーキング ドラフトは、私たちが話しているときに公開される予定です) では、関数が言語のファースト クラスの型になり、パラメーターとして渡すことができるため、"関数項目" 型も存在します。関数、シーケンスに保存されるか、動的に作成されます。

于 2009-11-12T23:47:56.247 に答える
1

集合演算子は自由に使用できるので、ほとんど何でも選択できます。

//x | //@x

構文を正しく思い出せば、すべての x 要素とすべての x 属性のリストが表示されるはずです。(パイプはユニオン演算子です)

于 2009-11-12T17:10:38.310 に答える