2

次の記事http://docs.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT3.htmlは、XPATHが以下をノードと見なすと述べています。

  • エレメント
  • 文章
  • 属性
  • コメント
  • 処理命令
  • 名前空間

私が知りたいのは、属性「id」とその値「2」が2つの異なるノードと見なされるかどうかです。例えば<name id="2">text</name>

または、テキストノードは要素間の「データ」http://www.w3.org/XML/Datamodel.htmlだけですか?私の直感によると、XPATHは、この例では4つのノード(「name」要素、属性「id」、テキスト値「2」、およびテキスト値「text」)があると見なします。

4

2 に答える 2

2

属性ノードには、名前と値があります。それらは別個のノードではありません。次の XML:

<name id="2">text</name>

... 3 つのノードを表します: 1) 名前がname;の要素。2) その子ノードはnameテキスト ノードです。id3) 名前がで値がの属性ノード2

仕様から:

属性ノードには、拡張名と文字列値があります。

以降:

属性ノードには文字列値があります。string-value は、XML 勧告 [XML] で指定されている正規化された値です。正規化された値が長さ 0 の文字列である属性は、特別に扱われません。つまり、string-value が長さ 0 の文字列である属性ノードになります。

于 2011-12-19T21:43:24.823 に答える
1

属性ノードの文字列値は単なる文字列であり、ノード自体ではありません

ノードの文字列値をテキスト ノードと混同しないでください。テキスト ノードは要素ノードの子であり、それ自体が文字列値を持ちます。

多くの場合、テキスト ノードの文字列値は、XML ドキュメントのシリアル化で表示される文字列ではありません。たとえば、次のようになります。

<t>M &amp; M</t>

によって選択されたテキスト ノードの文字列値/*/text()は ではなく"M &amp; M"、次のとおりです。

M & M
于 2011-12-19T21:53:52.650 に答える