Яка різниця між елементом та вузлом у XML?


370

Я працюю в Java з XML і мені цікаво; яка різниця між елементом і вузлом?


7
Впевнені, погляньте на w3c . Модель даних легко зрозуміти - навіть для мене!
xtofl

15
Чудовий коментар від forums.asp.net/t/443912.aspx/1#443940 : те саме, що між фруктами та яблуком. Кожен XmlElement - це XmlNode, але не кожен XmlEle - це XmlElement. XmlElement - це лише один вид XmlNode. Інші - XmlAttribute, XmlText тощо
atconway

2
Елемент є частиною формального визначення добре сформованого документа XML, тоді як вузол визначений як частина моделі об'єктної документації для обробки XML-документів.
Jool

Відповіді:


259

Об'єкт Node є основним типом даних для всієї DOM.

Вузол може бути вузлом елемента, вузлом атрибутів, текстовим вузлом або будь-яким іншим типом вузлів, поясненим у главі "Типи вузлів".

Елемент XML - це все від (включаючи) початковий тег елемента до (включаючи) кінцевий тег елемента.


122
Тепер, коли я розумію відповідь ... Конвенція дурна. Слова повинні бути навпаки. У природній англійській мові «елемент» - це те, що є основним складовим елементом, з якого будується все інше. тобто елемент у природній англійській мові є загальнішим ...
Sam Svenbjorgchristiensensen

11
@Juan Mendes: Це те, що вони відповідають DOM, але Сем вважає, що DOM вважає вузли більш базовими (примітивними), ніж елементи, коли "елемент" насправді відноситься до найпростішого будівельного блоку англійською мовою.
BoltClock

16
@SamSvenbjorgchristiensensen це не зовсім точно. Елементи можна розділити далі на "складові частини", як протони, нейтрони та електрони, які, в свою чергу, можуть бути розбиті на кварки, нейтрино тощо. Краще зрозуміти, що означає "вузол" в теорії графа , і тоді ви зрозумійте, чому дизайнери XML обрали саме таку назву (DOM - це лише ієрархічний графік).
Les Hazlewood

20
@LesHazlewood На насправді, слово «елемент» використовується для опису фізичних елементів (водень, гелій і т.д.) , тому що вони дійсно думають , що ці речі були нероздільні. Лише набагато пізніше вони з’ясували, що вони помиляються - занадто пізно, щоб змінити назву; ) Я погоджуюся з Семом, те, як вони назвали та диференціювали елементи дому проти вузлів, є заплутаним і погано продуманим (стільки ж специфікації html).
BT

3
@BT ваш аргумент мав би спрацювати, якби комітет специфікацій XML жив у Стародавній Греції :) Вони не мали, і як таке сучасне (словник) визначення елемента, який (явно) являє собою складові частини, має сенс. Додайте це з знаннями теорії графів про вузли, і насправді не так багато місця для інтерпретації.
Les Hazlewood

68

Різні специфікації W3C визначають різні набори типів "Вузол".

Таким чином, специфікація DOM визначає такі типи вузлів:

  • Document- Element(максимум один), ProcessingInstruction, Comment,DocumentType
  • DocumentFragment - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • DocumentType - дітей немає
  • EntityReference - Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • Element- Element, Text, Comment, ProcessingInstruction, CDATASection,EntityReference
  • Attr- Text,EntityReference
  • ProcessingInstruction - дітей немає
  • Comment - дітей немає
  • Text - дітей немає
  • CDATASection - дітей немає
  • Entity- Element, ProcessingInstruction, Comment, Text, CDATASection,EntityReference
  • 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 Element / Node


    7
    Цей короткий приклад дає мені більше розуміння, ніж обрана відповідь.
    KMC

    27

    Вузол може бути декількома різними видами речей: текст, коментар, елемент, сутність тощо. Елемент - це певний вид вузла.


    15

    Як описано в різних специфікаціях XML , elementце те, що складається з початкового тегу та кінцевого тегу, а також вмісту між ними, або по черзі порожнього тегу елемента (який не має контенту або кінцевого тегу). Іншими словами, це все елементи:

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

    Хоча ви чуєте "вузол", який використовується приблизно з однаковим значенням, він не має точного визначення для специфікацій XML. Зазвичай використовується для позначення вузлів таких речей, як DOM, які можуть бути тісно пов'язані з XML або використовувати XML для їх представлення.


    11

    Документ XML складається з вкладених елементів. Елемент починається з його тегу, який відкривається, і закінчується на його тезі . Ви, мабуть, бачили <body>і </body>в html. Все, що відкривається та закриває тегами, є вмістом елемента . Якщо елемент визначений тегом, що самозакривається (наприклад, <br/>), то його вміст порожній.

    Відкриваючі теги також можуть визначати атрибути , наприклад. <p class="rant">. У цьому прикладі назва атрибута - "class", а його значення - "rant".

    Мова XML не має такого поняття, як "вузол" . Прочитайте специфікацію , слово не зустрічається.

    Деякі люди неформально використовують слово "вузол", щоб означати елемент, що заплутано, оскільки деякі парсери також надають слову технічне значення (ідентифікуючи "текстові вузли" та "вузли елементів"). Точне значення залежить від аналізатора, тому слово не визначене, якщо ви не вкажете, який парсер ви використовуєте. Якщо ви маєте на увазі елемент, скажіть «елемент» .


    Слово дійсно відбувається: "(тобто кожен вузол аркуша в дереві синтаксису для регулярного виразу)". Він знаходиться в ненормативному додатку, але все-таки він трапляється. Там термін використовується як вузол у дереві розбору.
    снові

    Навіть якщо вважати, що у визначенні XML не згадуються вузли, модель об'єктного документу (DOM), визначена для програмної інтерпретації та маніпулювання XML (тією ж організацією стандартів), дійсно визначає і використовує термін "вузол". Ця відповідь не допомагає розмежовувати терміни і не допомагає просто ігнорувати різні способи використання, стверджуючи, що вони означають те саме.
    C Перкінс

    9

    Вузол є базовим класом як для елементів, так і для атрибутів (і в основному для всіх інших представлень XML також).


    7

    Елемент - єдиний вид вузла, який може мати дочірні вузли та атрибути.

    У документі також є дочірні вузли, АЛЕ
    немає атрибутів, немає тексту, точно один дочірній елемент.


    2

    Вузол визначається як:

    найменша одиниця дійсної, повної структури в документі.

    або як:

    Об'єкт у вигляді дерева, який служить контейнером для зберігання пов'язаних об'єктів.

    Зараз їх існує багато різних видів вузлів як вузол елементів, вузол атрибутів тощо.


    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, що стосується об'єктної моделі, а не в самому тексті.
    злетіння

    -7

    вузол і елемент однакові. Кожен елемент - це вузол, але справа не в тому, що кожен вузол повинен бути елементом.


    9
    Оскільки "справа не в тому, що кожен вузол повинен бути елементом", твердження "вузол і елемент однакові" є помилковим.
    glglgl

    1
    Крім того, що ваш опис невірний, він також не дуже корисний. Єдине, в чому ви правильні, - це те, що між термінами є якась різниця, але питання полягало в тому, яка різниця є.
    злетіння
    Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
    Licensed under cc by-sa 3.0 with attribution required.