XML'deki bir öğe ve bir düğüm arasındaki fark nedir?


370

Java ile XML ile çalışıyorum ve merak ediyorum; bir eleman ve bir düğüm arasındaki fark nedir?


7
Emin w3c bir göz atın . Veri modelini anlamak kolaydır - benim için bile!
xtofl

15
Forums.asp.net/t/443912.aspx/1#443940 adresinden harika yorum : Meyve ve elma arasındaki ile aynı. Her XmlElement XmlNode, ancak her XmlNode XmlElement değildir. XmlElement sadece bir çeşit XmlNode'dur. Diğerleri XmlAttribute, XmlText vb.
atconway

2
Bir Öğe, iyi biçimlendirilmiş bir XML belgesinin resmi tanımının bir parçasıdır; bir düğüm ise XML belgelerini işlemek için Belge Nesne Modelinin bir parçası olarak tanımlanır.
Jool

Yanıtlar:


259

Düğüm nesnesi, tüm DOM için birincil veri türüdür.

Düğüm, bir eleman düğümü, bir öznitelik düğümü, bir metin düğümü ya da "Düğüm türleri" bölümünde açıklanan düğüm türlerinden herhangi biri olabilir.

XML öğesi, öğenin başlangıç ​​etiketinden öğenin bitiş etiketine (dahil) kadar her şeydir.


122
Şimdi cevabı anladığım için ... Sözleşme aptalca. Kelimeler tam tersi olmalı. Doğal İngilizce dilinde bir 'element', her şeyin inşa edildiği en temel yapı taşıdır. Yani doğal İngilizce bir unsur daha genel ...
Sam Svenbjorgchristiensensen

11
@Juan Mendes: DOM'a göre bunlar budur, ancak Sam'in amacı, "element" aslında İngilizce'deki en temel yapı taşını ifade ettiğinde, DOM'un düğümleri elemanlardan daha temel (ilkel) olarak görmesidir.
BoltClock

16
@SamSvenbjorgchristiensensen tam olarak doğru değil. Elemanlar, protonlar, nötronlar ve elektronlar gibi 'kurucu parçalara' ayrılabilir, bu da kuarklara, nötrinolara vb. Ayrılabilir. Daha sonra grafik teorisinde bir 'düğüm'ün ne anlama geldiğini anlamak daha iyi olur. XML tasarımcılarının neden bu adı seçtiğini anlayın (DOM yalnızca hiyerarşik bir grafiktir).
Les Hazlewood

20
Aslında @LesHazlewood, kelime "eleman" onlar çünkü fiziksel unsurları (hidrojen, helyum, vs) tanımlamak için kullanılmıştır yaptılar böyle şeyler bölünmez olduğunu düşünüyorum. Sadece daha sonra yanıldıklarını öğrendiler - adını değiştirmek için çok geç; Sam ile aynı fikirdeyim, dom öğelerini düğümlere adlandırma ve farklılaştırma biçimleri kafa karıştırıcı ve kötü düşünülmüş (html özelliklerinin çoğu gibi).
BT

3
@BT, XML spec komitesi eski Yunanistan'da yaşasaydı, argümanınız su tutacaktı :) Bu şekilde, (açıkça) kurucu parçaları temsil eden elementin modern (sözlük) tanımı mantıklı. Bunu grafik teorisi düğümleri bilgisi ile ekleyin ve gerçekten yorum için fazla yer yok.
Les Hazlewood

68

Farklı W3C spesifikasyonları farklı "Düğüm" tipi setlerini tanımlar.

Böylece, DOM spec aşağıdaki düğüm tiplerini tanımlar:

  • Document- Element(bir maksimum), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType -- evlat yok
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction -- evlat yok
  • Comment -- evlat yok
  • Text -- evlat yok
  • CDATASection -- evlat yok
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Notation -- evlat yok

XML BilgiKümesi (XPath'ın tarafından kullanılan) düğüm daha küçük bir dizi var

  • Belge Bilgi Öğesi
  • Eleman Bilgi Öğeleri
  • Özellik Bilgi Öğeleri
  • Talimat Bilgilerini İşleme
  • Açıklanmamış Varlık Referans Bilgi Öğeleri
  • Karakter Bilgi Öğeleri
  • Yorum Bilgi Öğeleri
  • Belge Türü Beyanı Bilgi Öğesi
  • Ayrıştırılmamış Varlık Bilgi Öğeleri
  • Gösterim Bilgi Kalemleri
  • Ad Alanı Bilgi Öğeleri
  • XPath aşağıdaki Düğüm türlerine sahiptir:

    • kök düğümler
    • eleman düğümleri
    • metin düğümleri
    • öznitelik düğümleri
    • ad alanı düğümleri
    • işlem talimatı düğümleri
    • yorum düğümleri

    " Bir eleman ve bir düğüm arasındaki fark nedir " sorusunun cevabı :

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


    29

    Bir Düğüm DOM ağacının bir parçasıdır, bir Öğe belirli bir Düğüm türüdür

    Örneğin <foo> This is Text </foo>

    Foo Öğesi (bu da bir Düğümdür, Öğe Düğümden miras alır) ve bir Metin Düğümü (Bu Metin'tir), yani foo Öğesinin / Düğümünün alt öğesi


    7
    Bu kısa örnek, seçilen cevaptan daha fazla anlamamı sağlıyor.
    KMC

    27

    Bir düğüm birkaç farklı türde olabilir: bazı metin, yorum, öğe, varlık, vb. Öğe, belirli bir düğüm türüdür.


    15

    Çeşitli XML tarif edildiği gibi özellikleri , bir element(herhangi bir içerik veya uç etiketi vardır), başlangıç işareti ve uç etiketi ve aradaki içeriği, veya alternatif olarak, bir boş eleman etiketi oluştuğu olmasıdır. Başka bir deyişle, bunların hepsi öğelerdir:

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

    Her ne kadar kabaca aynı anlamla kullanılan "düğüm" ü duysanız da, XML spesifikasyonları için kesin bir tanım yoktur. Genellikle, DOM'lar gibi XML ile yakından ilişkili olabilecek veya temsilleri için XML kullanan şeylerin düğümlerine atıfta bulunur.


    11

    Bir xml belgesi yuvalanmış öğelerden yapılır. Bir öğe açılış etiketinde başlar ve kapanış etiketinde biter . Muhtemelen görüyorsunuz <body>ve </body>html biçimindesiniz. Açılış ve kapanış etiketleri arasındaki her şey öğenin içeriğidir . Bir öğe kendi kendine kapanan bir etiketle (örn. <br/>) Tanımlanırsa içeriği boştur.

    Etiketleri açma ayrıca özellikleri de belirtebilir , örn. <p class="rant">. Bu örnekte özellik adı 'sınıf' ve değeri 'rant' şeklindedir.

    XML dilinin 'düğüm' diye bir şeyi yoktur . Spesifikasyonu okuyun, kelime oluşmaz.

    Bazı insanlar 'düğüm' kelimesini gayri resmi olarak kullanırlar, bu da kafa karıştırıcıdır, çünkü bazı ayrıştırıcılar kelimeye teknik bir anlam da verir ('metin düğümlerini' ve 'öğe düğümlerini' tanımlamak). Tam anlam ayrıştırıcıya bağlıdır, bu nedenle hangi ayrıştırıcıyı kullandığınızı belirtmedikçe, sözcük kötü tanımlanır. Eleman demek istiyorsan, 'element' deyin .


    Bu kelime oluşur: "(yani, düzenli ifade için sözdizimi ağacındaki her bir yaprak düğümü)". Normatif olmayan bir ekte bulunur, ancak yine de gerçekleşir. Orada terim ayrıştırma ağacında düğüm olarak kullanılır.
    1717'de

    XML tanımının düğümlerden bahsetmediği düşünülse bile, XML'nin (aynı standart kuruluş tarafından) programlı yorumu ve manipülasyonu için tanımlanan Belge Nesne Modeli (DOM) gerçekten "düğüm" terimini tanımlar ve kullanır. Bu cevap, terimlerin ayırt edilmesine yardımcı olmaz ve aynı anlama geldiklerini iddia ederek çeşitli kullanımları görmezden gelmeye yardımcı olmaz.
    C Perkins

    9

    Düğüm, hem öğeler hem de nitelikler için temel sınıftır (ve temelde diğer tüm XML gösterimleri de).


    7

    Öğe , alt düğümlere ve özniteliklere sahip olabilen tek düğüm türüdür .

    Belgede ayrıca alt düğümler var, AMA
    nitelik yok, metin yok, tam olarak bir alt öğe var.


    2

    Bir düğüm şu şekilde tanımlanır :

    bir belgedeki geçerli, eksiksiz bir yapının en küçük birimi.

    veya şu şekilde:

    Ağaç görünümünde, ilgili nesneleri tutmak için kap görevi gören bir nesne.

    Şimdi, bir eleman düğümü, bir öznitelik düğümü vb.Gibi birçok farklı düğüm türü vardır.


    1

    Şimdi biliyorum, eleman düğümlerden biri

    Buradaki tüm düğüm türleri " http://www.w3schools.com/dom/dom_nodetype.asp "

    Öğe, başlangıç ​​etiketiyle bitiş etiketindeki bitiş arasında

    Dolayısıyla metin düğümü bir düğümdür, ancak bir öğe değildir.



    -3

    XML Öğesi bir XML Düğümüdür, ancak nitelikler gibi ek öğeler içerir.

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

    Bu iddia için herhangi bir kaynağınız olduğunu düşünmüyorum? Örneğin, XML standardı "eleman" terimini boş bir eleman etiketi veya başlangıç ​​etiketinden ve bitiş etiketine ve bitiş etiketine dahil olan her şey olarak tanımlar. Bir başlangıç etiketi ve boş eleman etiketi yok değil herhangi unsurları olması gerekir. Her iki örnek de öğelerdir. "Düğüm" terimi başka bir yerde, DOM'da metnin kendisinde değil, bir nesne modeli ile ilgilidir.
    1717'de

    -7

    düğüm ve eleman aynı. Her öğe bir düğümdür, ancak her düğümün bir öğe olması gerekmez.


    9
    "Her düğümün bir eleman olması gerekmediğinden", "düğüm ve eleman aynıdır" iddiası yanlıştır.
    glglgl

    1
    Açıklamanız yanlış olduğu gibi, çok da kullanışlı değil. Doğru olduğunuz tek şey, terimler arasında bazı farkların olması, ancak soru, ne farkın olduğuydu.
    1717'de
    Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
    Licensed under cc by-sa 3.0 with attribution required.