Смущенный отношением между DOM и HTML (API)

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

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

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

Целями API DOM, специфичными для HTML, являются:

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

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

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

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

UPDATE
Наверное, мне интересно о DOM API против HTML API и DOM HTML API и API DOM HTML.

Ответы

Ответ 1

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

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

Ответ 2

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

Ответ 3

Короче:

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

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

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

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

Ответ 4

Ответил в другом месте, но, видимо, мы должны объявить (несколько) дублирование:

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

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

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

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

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