2010-11-29 3 views
14

Как связаны DOM и HTML? Является ли одно подмножество другого, более абстрактным, чем другое? Является ли HTML расширением DOM? Или они описывают довольно несвязанные понятия (связанные только с тем, что вы можете преобразовать из HTML в DOM)? Как бы вы нарисовали эти 2 на одной картинке, если бы вам пришлось?Смущает связь между DOM и HTML (API)

Например, какова цель этих спецификаций разницы. И первые и последние ссылки содержат информацию о HTMLElement ..

  1. http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/
  2. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/
  3. http://www.w3.org/TR/html5/

Я нашел возможный ответ на этот вопрос здесь: http://www.w3.org/TR/2003/REC-DOM-Level-2-HTML-20030109/html.html#ID-1176245063-h2, который

Целями HTML-специфического DOM API являются:

  • специализироваться и добавить функциональность, которая относится именно к HTML-документов и элементов
  • ...
  • обеспечить удобство механизмы, при необходимости, для общих и частых операций по HTML документов.

Означает ли это, что третье звено в списке выше расширяет DOM Core, которая описана в 1-й линии?

Или если вы реализуете DOM Core, что позволяет вам манипулировать простыми документами, но если вы реализуете HTML, это дает вам как супер-DOM, который позволяет вам манипулировать более сложными объектами?

Наконец, скажите, что вы хотите реализовать свой собственный браузер, который может открывать только веб-сайты HTML5 (рендеринг, а также поддержку JavaScript). Достаточно ли прочитать спецификацию, содержащуюся в третьей ссылке, или вам сначала нужно реализовать все, что предусмотрено в DOM, а затем реализовать специфические для HTML5 вещи?

UPDATE
Я предполагаю, что я задаюсь вопросом о DOM API против HTML API против DOM HTML API против HTML DOM API.

+0

Обратите внимание, что текущий стандарт DOM Core - это DOM Core 3, а не DOM Core 2. – 2010-11-29 23:32:42

+1

@mlvljr, какой глупый вопрос. – 2015-06-15 11:49:34

ответ

9

HTML - это текст, а DOM - это объектная модель в памяти для представления дерева, описанного в HTML.

10

Спецификация HTML описывает HTML в терминах текстового документа с определенным синтаксисом. DOM, с другой стороны, описывает модель объекта, которую генерирует браузер, когда он анализирует HTML-документ. Но оба вида описывают одну и ту же абстрактную модель, которая является элементами и атрибутами HTML.

DOM-core - это объектная модель, которая является общей для всех документов XML (включая HTML) с элементами и атрибутами. HTML-DOM - это расширение основной DOM с более конкретными интерфейсами для различных элементов HTML.

9

Короче:

Стандарты HTML определяют язык HTML - который/существуют теги атрибуты и что они означают.

Стандарты DOM определяют интерфейсы, которые реализуются объектами из дерева объектов DOM в браузере. (Веб-браузер анализирует исходный код HTML и создает на нем дерево объектов. Объекты этого дерева имеют свойства, определенные стандартами DOM (и других).)

Стандарт HTML5 также определяет интерфейсы для материала который не был определен ранее - как объект окна, навигатор и объект истории, глобальные функции, такие как оповещения и подсказки, функции тайм-аута и т. д.

Различные стандарты не являются подмножествами друг друга - они представляют собой лишь отдельные стандарты, которые определите кусок всей картины.

5

Ответил в другом месте, но, видимо, мы должны embrace (some) duplication:

документ объектная модель является внутреннее представление браузера в формате HTML. Это основано на идее «детей». Так <p> тег может содержать несколько текстовых узлов и несколько <span> тегов, например:

<p><span>Hello,</span> this is some text. <span>It</span> is just a short paragraph</p> 

Этот <p> тег имеет 4 детей: два <span> с, и два текстовых узлов (this is some text и is just a short paragraph). Остальные биты текста являются дочерними элементами соответствующих тегов <span>.

Браузер хранит эту информацию (вместо того, чтобы просто хранить огромный поток HTML, который очень сложно обрабатывать) во внутренней памяти. Это упрощает форматирование с использованием каскадных таблиц стилей (CSS) и вносить изменения в него с помощью JavaScript (создавать и удалять детали, перемещать части от одного родителя к другому и т. Д.).

Все версии HTML (кроме, возможно, очень ранних) используют DOM. Каждая версия имеет правила, например теги, которые могут быть дочерними для каждого элемента. Эти правила реализуются при обработке HTML и создании DOM-представления.

Смежные вопросы