Apa perbedaan antara elemen dan simpul dalam XML?

370

Saya bekerja di Jawa dengan XML dan saya bertanya-tanya; apa perbedaan antara elemen dan simpul?

Philip Morton
sumber
7
Tentu lihat w3c . Datamodel mudah dimengerti - bahkan untuk saya!
xtofl
15
Komentar luar biasa dari forums.asp.net/t/443912.aspx/1#443940 : Sama seperti antara buah dan apel. Setiap XmlElement adalah XmlNode, tetapi tidak setiap XmlNode adalah XmlElement. XmlElement hanyalah satu jenis XmlNode. Lainnya adalah XmlAttribute, XmlText dll.
atconway
2
Suatu Elemen adalah bagian dari definisi formal dari dokumen XML yang terbentuk dengan baik, sedangkan sebuah node didefinisikan sebagai bagian dari Model Objek Dokumen untuk memproses dokumen XML.
Jool

Jawaban:

259

Objek Node adalah tipe data primer untuk seluruh DOM.

Node dapat berupa simpul elemen, simpul atribut, simpul teks, atau jenis simpul lainnya yang dijelaskan di bab "Jenis simpul".

Elemen XML adalah segalanya mulai dari (termasuk) tag awal elemen hingga (termasuk) tag akhir elemen.

Benoit
sumber
122
Sekarang saya mengerti jawabannya ... Konvensi itu bodoh. Kata-kata harus sebaliknya. Dalam bahasa Inggris alami 'elemen' adalah sesuatu yang merupakan blok bangunan paling dasar, yang darinya segala sesuatu dibangun. yaitu elemen dalam bahasa Inggris alami lebih umum ...
Sam Svenbjorgchristiensensen
11
@Juan Mendes: Itulah yang mereka sesuai dengan DOM, tetapi poin Sam adalah bahwa DOM menganggap node lebih mendasar (primitif) daripada elemen, ketika "elemen" sebenarnya mengacu pada blok bangunan paling dasar dalam bahasa Inggris.
BoltClock
16
@SamSvenbjorgchristiensensen itu tidak cukup akurat. Elemen dapat dipecah lebih jauh menjadi 'bagian penyusun' seperti proton, neutron dan elektron, yang pada gilirannya dapat dipecah menjadi quark, neutrino, dll. Lebih baik untuk memahami apa arti 'simpul' dalam teori grafik , dan kemudian Anda akan pahami mengapa desainer XML memilih nama itu (DOM hanyalah grafik hierarkis).
Les Hazlewood
20
@LesHazlewood Sebenarnya, kata "unsur" digunakan untuk menggambarkan unsur-unsur fisik (hidrogen, helium, dll) karena mereka melakukan berpikir hal-hal yang tak terpisahkan. Baru kemudian mereka mengetahui bahwa mereka salah - terlambat untuk mengganti nama; ) Saya setuju dengan Sam, cara mereka menamai dan membedakan elemen dom vs node membingungkan dan kurang dipikirkan (karena banyak spesifikasi html).
BT
3
@ Bt argumen Anda akan menahan air jika komite spec XML tinggal di Yunani kuno :) Mereka tidak, dan dengan demikian, definisi (kamus) modern elemen yang (jelas) mewakili bagian konstituen masuk akal. Tambahkan itu dengan teori graph pengetahuan node, dan benar-benar tidak ada banyak ruang untuk interpretasi.
Les Hazlewood
68

Spesifikasi W3C yang berbeda menentukan rangkaian tipe "Node" yang berbeda.

Dengan demikian, spesifikasi DOM mendefinisikan jenis node berikut:

  • Document- Element(maksimum satu), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType - tidak ada anak
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction - tidak ada anak
  • Comment - tidak ada anak
  • Text - tidak ada anak
  • CDATASection - tidak ada anak
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Notation - tidak ada anak

The XML Infoset (digunakan oleh XPath) memiliki seperangkat kecil node:

  • Item Informasi Dokumen
  • Item Informasi Elemen
  • Item Informasi Atribut
  • Memproses Item Informasi Instruksi
  • Item Informasi Referensi Entitas yang Tidak Diperluas
  • Item Informasi Karakter
  • Item Informasi Komentar
  • Item Informasi Pernyataan Jenis Dokumen
  • Item Informasi Entitas yang Tidak Diparsing
  • Item Informasi Notasi
  • Item Informasi Namespace
  • XPath memiliki tipe Node berikut:

    • root node
    • elemen node
    • simpul teks
    • atribut atribut
    • node namespace
    • memproses node instruksi
    • node komentar

    Jawaban untuk pertanyaan Anda " Apa perbedaan antara elemen dan simpul " adalah:

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

    Dimitre Novatchev
    sumber
    29

    Node adalah bagian dari pohon DOM, Elemen adalah jenis Node tertentu

    misalnya <foo> This is Text </foo>

    Anda memiliki Elemen foo, (yang juga merupakan Node, karena Elemen mewarisi dari Node) dan Node Teks 'Ini adalah Teks', yang merupakan anak dari Elemen foo / Node

    mmaibaum
    sumber
    7
    Contoh singkat ini memberi saya lebih banyak pengertian daripada jawaban yang dipilih.
    KMC
    27

    Node dapat berupa beberapa jenis hal: beberapa teks, komentar, elemen, entitas, dll. Elemen adalah jenis node tertentu.

    Greg Hewgill
    sumber
    15

    Seperti dijelaskan dalam berbagai spesifikasi XML , an elementadalah yang terdiri dari tag awal, dan tag akhir, dan konten di antaranya, atau secara bergantian tag elemen kosong (yang tidak memiliki konten atau tag akhir). Dengan kata lain, ini semua adalah elemen:

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

    Meskipun Anda mendengar "simpul" yang digunakan dengan arti yang hampir sama, ia tidak memiliki definisi yang tepat per spesifikasi XML. Biasanya digunakan untuk merujuk ke simpul hal-hal seperti DOM, yang mungkin terkait erat dengan XML atau menggunakan XML untuk representasi mereka.

    fenoma
    sumber
    11

    Dokumen xml terbuat dari elemen bersarang. Elemen dimulai pada tag pembukaannya dan berakhir pada tag penutupnya . Anda mungkin terlihat <body>dan </body>dalam html. Segala sesuatu antara tag pembuka dan penutup adalah konten elemen . Jika suatu elemen didefinisikan oleh tag yang menutup sendiri (mis. <br/>) Maka isinya kosong.

    Tag pembuka juga dapat menentukan atribut , misalnya. <p class="rant">. Dalam contoh ini nama atribut adalah 'kelas' dan nilainya 'kata-kata kasar'.

    Bahasa XML tidak memiliki 'simpul' . Baca spec , kata itu tidak muncul.

    Beberapa orang menggunakan kata 'simpul' secara informal untuk mengartikan elemen, yang membingungkan karena beberapa parser juga memberikan kata tersebut makna teknis (mengidentifikasi 'simpul teks' dan 'simpul elemen'). Arti yang tepat tergantung pada parser, sehingga kata tersebut tidak jelas kecuali Anda menyatakan parser apa yang Anda gunakan. Jika maksud Anda elemen, ucapkan 'elemen' .

    Kolonel Panic
    sumber
    Kata itu memang terjadi: "(yaitu, setiap simpul daun di pohon sintaks untuk ekspresi reguler)". Itu ada dalam lampiran non-normatif, tetapi bagaimanapun itu terjadi. Di sana istilah ini digunakan sebagai simpul di pohon parse.
    skyking
    Bahkan jika seseorang menganggap bahwa definisi XML tidak menyebutkan node, Document Object Model (DOM) yang didefinisikan untuk interpretasi terprogram dan manipulasi XML (oleh organisasi standar yang sama) memang mendefinisikan dan menggunakan istilah "node". Jawaban ini tidak membantu membedakan istilah dan tidak membantu mengabaikan berbagai penggunaan dengan menyatakan bahwa mereka memiliki arti yang sama.
    C Perkins
    9

    Node adalah kelas dasar untuk elemen dan atribut (dan pada dasarnya semua representasi XML lainnya juga).

    Troels Thomsen
    sumber
    7

    Elemen adalah satu-satunya jenis simpul yang dapat memiliki simpul dan atribut anak.

    Dokumen juga memiliki simpul anak, TETAPI
    tanpa atribut, tanpa teks, persis satu elemen anak.

    eugensk
    sumber
    2

    Node didefinisikan sebagai:

    unit terkecil dari struktur lengkap yang valid dalam dokumen.

    atau sebagai:

    Objek dalam tampilan hierarki yang berfungsi sebagai wadah untuk menampung objek terkait.

    Sekarang mereka memiliki banyak jenis simpul sebagai simpul elemen, simpul atribut, dll.

    Robert Rocha
    sumber
    1

    Sekarang saya tahu, elemen adalah salah satu simpul

    Semua jenis simpul di sini " http://www.w3schools.com/dom/dom_nodetype.asp "

    Elemen adalah antara tag awal dan akhir pada tag akhir

    Jadi simpul teks adalah simpul, tetapi bukan elemen.


    sumber
    0

    Elemen adalah jenis simpul seperti atribut, teks dll.

    Simon Keep
    sumber
    -3

    Elemen XML adalah XML Node tetapi dengan elemen tambahan seperti atribut.

    <a>Lorem Ipsum</a>  //This is a node
    
    <a id="sample">Lorem Ipsum</a>  //This is an element
    Sabique A Khan
    sumber
    Saya tidak menganggap Anda memiliki sumber untuk klaim ini? Misalnya standar XML mendefinisikan "elemen" istilah menjadi tag elemen kosong atau segala sesuatu dari dan termasuk tag awal ke dan termasuk tag akhir. Tag awal dan tag elemen kosong tidak perlu memiliki elemen apa pun. Kedua contoh Anda adalah elemen. Istilah "simpul" didefinisikan di tempat lain, dalam DOM yang merupakan tentang model objek dan bukan dalam teks itu sendiri.
    skyking
    -7

    simpul & elemennya sama. Setiap elemen adalah node, tetapi bukan berarti setiap node harus menjadi elemen.

    Purna
    sumber
    9
    Karena "bukan setiap node harus menjadi elemen", klaim "simpul & elemen sama" salah.
    glglgl
    1
    Selain deskripsi Anda salah, itu juga tidak terlalu berguna. Satu-satunya hal yang benar tentang Anda adalah ada beberapa perbedaan di antara istilah-istilah itu, tetapi pertanyaannya adalah apa perbedaannya.
    skyking