Смущенный отношением между 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-представления.