Document Object Model

Document Object Model

www.w3.org/.../ (DOM1)
www.w3.org/.../ (DOM2)
www.w3.org/.../ (DOM3)

DOM (Document Object Model) – кроссплатформенный мультиязычный программный интерфейс, предоставляющий приложениям и скриптам доступ (в том числе и на изменение) к структуре и содержанию HTML, XHTML, XML-документов.

Document Object Model позволяет эффективно выстроить иерархическое дерево веб-документа для дальнейшей работы с ним.

Большая часть библиотек для парсинга основаны на DOM.

DOM является потомком Dynamic HTML Object Model – объектной моделью веб-документов, разработанной для Netscape Navigator и Internet Explore 4 в 1997 году. Новинка позволяла с помощью Java Script на стороне клиента изменять HTML-структуру документа и манипулировать каскадными таблицами стилей. Оба браузера со временем перестали самостоятельно развивать  Dynamic HTML Object Model, которая сейчас считается морально устаревшей технологией. Netscape со временем вообще прекратил существование, IE поддерживает данную технологию в целях обратной совместимости.

W3C
Реорганизацией Dynamic HTML Object Model в 1998 году занялась World Wide Web Consortium (W3C).

«DOM уровень 1» (DOM1, DOM level 1) – 1-й вариант новой технологии. На этому уровне  уже присутствуют основные возможности доступа к веб-документам.

Следующая ревизия в 2000 году именовалась «DOM уровень 2» (DOM2, DOM level 2). В XML были добавлены пространства имён; появились события; введена функция getElementById.

С 2004 года было объявлено о создании версии «DOM уровень 3» (DOM3,  DOM level 3) являющейся последней на сегодняшний день. Среди новинок: XPath, обработка событий клавиатуры, сериализация xml-документов.

Линейка DOM1/DOM2/DOM3, собственно, и известна под собирательным названием DOM.

HTML5

Модели, существовавшие до DOM1 и вошедшие в первый и последующие уровни, известны как «DOM уровень 0» (DOM0, DOM level 0). Здесь, в частности, можно упомянуть document.images, document.forms, document.layers и document.all. Данные модели не являются спецификациями DOM, название «DOM уровень 0» это свидетельство того, что предшестввоало официальным разработкам W3C.

К слову, разработчики браузеров не обязаны интерпретировать веб-документы с позииции Document Object Model. Но именно с помощью DOM язык Java Script получает доступ к структуре и содержанию HTML-документов. Поэтому выбора – поддерживать или нет – по большому счёту, нет.

Текущей версией является DOM2, её взяли на вооружение все браузерные движки. DOM3 пока что имеет экспериментальный (рекомендованный) статус и даже основные браузеры поддерживают его не в полной мере. В PHP5, Ruby1.9.x и Python3 также DOM3 реализован лишь частично.

См. также: SQL, CSV, XML, XLS / XLSX, JSON