Смущает связь между DOM и HTML (API) - PullRequest
14 голосов
/ 29 ноября 2010

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

Например, какова цель этих различий.И первая, и последняя ссылки содержат информацию о 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,, то есть

Цели API DOM для HTML:

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

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

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

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

ОБНОВЛЕНИЕ
Я полагаю, яменя интересует DOM API против HTML API против DOM HTML API против HTML DOM API.

Ответы [ 4 ]

10 голосов
/ 29 ноября 2010

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

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

10 голосов
/ 29 ноября 2010

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

9 голосов
/ 30 ноября 2010

Вкратце:

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

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

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

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

5 голосов
/ 02 декабря 2010

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

Объектная модель документа является внутренним представлением 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.

...