XMLの要素とノードの違いは何ですか?


370

私はXMLを使用してJavaで作業していますが、疑問に思っています。要素とノードの違いは何ですか?


7
確かにw3cを見てください。データモデルは理解しやすいです-私でも!
xtofl 2008

15
forums.asp.net/t/443912.aspx/1#443940からの素晴らしいコメント:果物とリンゴの間と同じです。すべてのXmlElementはXmlNodeですが、すべてのXmlNodeがXmlElementであるとは限りません。XmlElementはXmlNodeの一種にすぎません。その他はXmlAttribute、XmlTextなどです
atconway 2013年

2
Elementは整形式のXMLドキュメントの正式な定義の一部ですが、ノードはXMLドキュメントを処理するためのDocument Object Modelの一部として定義されます。
Jool 2014

回答:


259

Nodeオブジェクトは、DOM全体の主要なデータ型です。

ノードは、要素ノード、属性ノード、テキストノード、または「ノードタイプ」の章で説明されているその他のノードタイプです。

XML要素は、要素の開始タグ(含む)から要素の終了タグ(含む)までのすべてです。


122
私は答えを理解したので...大会は愚かです。言葉は逆でなければなりません。自然英語では、「要素」は最も基本的なビルディングブロックであり、他のすべてのものが構築されます。つまり、自然な英語の要素はより一般的です...
Sam Svenbjorgchristiensensen 2010年

11
@Juan Mendes:それはDOMによるとそうですが、Samの要点は、「要素」が実際には英語で最も基本的な構成要素を指す場合、DOMはノードを要素よりも基本(プリミティブ)と見なすということです。
BoltClock

16
@SamSvenbjorgchristiensensen正確ではありません。要素は、陽子、中性子、電子などの「構成要素」にさらに分解でき、次にクォーク、ニュートリノなどに分解できます。グラフ理論における「ノード」の意味を理解することをお勧めします。 XMLデザイナーがその名前を選んだ理由を理解してください(DOMは単なる階層グラフです)。
Les Hazlewood 2014

20
@LesHazlewood実際、「要素」という言葉は、物理的な要素(水素、ヘリウムなど)を説明するために使用されていました。彼らが間違っていることを彼らが知ったのはその後ずっと後でした-名前を変更するには遅すぎる。)私はサムに同意します、それらがdom要素とノードの名前を付けて区別する方法は混乱し、(HTML仕様の多くがそうであるように)よく考えられていません。
BT 2014年

3
@BTあなたの議論は、XML仕様委員会が古代ギリシャに住んでいたとしたら、それは成り立ちません。ノードのグラフ理論の知識を加えて追加すると、解釈の余地はほとんどありません。
Les Hazlewood 2014年

68

異なるW3C仕様では、「ノード」タイプの異なるセットが定義されています。

したがって、DOM仕様では次のタイプのノードを定義しています。

  • Document- Element(一方の最大)、 、、ProcessingInstruction CommentDocumentType
  • DocumentFragment - 、ElementProcessingInstructionComment、、TextCDATASectionEntityReference
  • DocumentType -子供なし
  • EntityReference - 、ElementProcessingInstructionComment、、TextCDATASectionEntityReference
  • Element- 、ElementTextComment、、ProcessingInstruction CDATASectionEntityReference
  • Attr- TextEntityReference
  • ProcessingInstruction -子供なし
  • Comment -子供なし
  • Text -子供なし
  • CDATASection -子供なし
  • Entity- 、ElementProcessingInstructionComment、、TextCDATASectionEntityReference
  • Notation -子供なし

XML情報セット(のXPathによって使用される)は、ノードの小さなセットを有します。

  • ドキュメント情報アイテム
  • 要素情報項目
  • 属性情報アイテム
  • 処理指示情報アイテム
  • 展開されていないエンティティ参照情報アイテム
  • キャラクター情報アイテム
  • コメント情報項目
  • 文書型宣言情報項目
  • 未解析のエンティティ情報アイテム
  • 表記情報項目
  • 名前空間情報アイテム
  • XPathには次のノードタイプがあります。

    • ルートノード
    • 要素ノード
    • テキストノード
    • 属性ノード
    • 名前空間ノード
    • 処理命令ノード
    • コメントノード

    あなたの質問要素とノードの違いは何ですかに対する答えは次のとおりです。

    An element is a type of node. Many other types of nodes exist and serve different purposes.


    29

    ノードはDOMツリーの一部であり、要素は特定のタイプのノードです

    例えば <foo> This is Text </foo>

    foo要素(要素はノードから継承するため、ノードでもあります)と、foo要素/ノードの子であるテキストノード 'これはテキスト'があります


    7
    この短い例では、選択した答えよりも理解が深まります。
    KMC

    27

    ノードは、テキスト、コメント、要素、エンティティなど、いくつかの異なる種類のものにすることができます。要素は特定の種類のノードです。


    15

    さまざまなXML 仕様で説明されているように、elementは、開始タグと終了タグ、およびその間のコンテンツで構成されるもの、または空の要素タグ(コンテンツまたは終了タグがないもの)です。つまり、これらはすべて要素です。

    <foo> stuff </foo>
    <foo bar="baz"></foo>
    <foo baz="qux" />

    「ノード」とほぼ同じ意味で使用されているように聞こえますが、XML仕様による正確な定義はありません。通常、DOMのようなもののノードを参照するために使用されます。DOMはXMLと密接に関連している場合や、XMLを使用して表現している場合があります。


    11

    xmlドキュメントは、ネストされた要素で構成されています。要素は、その時に始まり、開始タグと終了時に終了タグ。あなたは、おそらく見ている<body></body>、HTMLインチ 開始タグと終了タグの間のすべてが要素のコンテンツです。要素が自己終了タグ(例:)で定義されている場合、<br/>そのコンテンツは空です。

    開始タグは属性を指定することもできます。<p class="rant">。この例では、属性は「class」で、その値は「rant」です。

    XML言語には「ノード」などはありません仕様を読んでください、単語は発生しません。

    一部の人々は、「ノード」という単語を非公式に要素を意味するために使用しますが、一部のパーサーはこの単語に技術的な意味も与えるため、混乱します(「テキストノード」と「要素ノード」を識別する)。正確な意味はパーサーによって異なるため、使用しているパーサーを指定しない限り、単語は不明確です。elementの場合は、「element」と言います


    「(つまり、正規表現の構文ツリーの各リーフノード)」という単語が発生します。それは非規範的な付録にありますが、それでも発生します。そこでは、この用語は解析ツリーのノードとして使用されます。
    2017年

    XML定義がノードについて言及していないと考える場合でも、プログラムによる解釈とXMLの操作(同じ標準化組織による)のために定義されたドキュメントオブジェクトモデル(DOM)は、実際に「ノード」という用語を定義して使用します。この回答は、用語を区別するのに役立ちません。また、同じことを意味すると断言して、さまざまな用途を単に無視するのに役立ちません。
    Cパーキンス


    7

    要素は、子ノードと属性を持つことができる唯一のノードです。

    ドキュメントには子ノードもあり
    ますが、属性もテキストもなく、子要素は1つだけです。


    2

    ノードは 次のように定義されます。

    文書内の有効で完全な構造の最小単位。

    またはとして:

    関連するオブジェクトを保持するコンテナとして機能するツリービュー内のオブジェクト。

    現在、要素ノード、属性ノードなど、さまざまな種類のノードがあります。


    1

    今、私は知っています、要素はノードの1つです

    ここにあるすべてのノードタイプ " http://www.w3schools.com/dom/dom_nodetype.asp "

    要素は開始タグと終了タグの終わりの間にあります

    つまり、テキストノードはノードですが、要素ではありません。



    -3

    XML要素はXMLノードですが、属性などの追加要素があります。

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element

    この申し立ての根拠はないと思いますか?たとえば、XML標準では、「要素」という用語を、空の要素タグ、または開始タグから開始タグまで、および終了タグを含むすべての要素タグのいずれかとして定義しています。開始タグと空の要素タグには、要素を含める必要ありませ。どちらの例も要素です。「ノード」という用語は、DOM内の他の場所で定義されており、テキスト自体ではなくオブジェクトモデルに関するものです。
    2017年

    -7

    ノードと要素は同じです。すべての要素はノードですが、すべてのノードが要素である必要はありません。


    9
    「すべてのノードが要素である必要があるわけではない」ため、「ノードと要素は同じである」という主張は間違っています。
    glglgl 2014

    1
    あなたの説明が間違っているだけでなく、それもあまり役に立ちません。正しいのは、用語に多少の違いがあるということだけですが、問題は、どのような違いがあるのか​​ということです。
    2017年
    弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
    Licensed under cc by-sa 3.0 with attribution required.