Об'єктна модель документа
РћР±'єктна Р�одель РґРѕРєСѓР�ента (англ. Document Object Model, DOM) вЂ” специфікація прикладного РїСЂРѕРіСЂР°Р�РЅРѕРіРѕ інтерфейсу для роботи Р·С– структурованиР�Рё РґРѕРєСѓР�ентаР�Рё (СЏРє правило, РґРѕРєСѓР�ентаР�Рё XML). Визначається ця специфікація консорціуР�РѕР� W3C.
З точки зору об'єктноорієнтованого програ�ування, DOM визначає класи, �етоди та атрибути цих �етодів для аналізу структури доку�ентів та роботи із представлення� доку�ентів у вигляді дерева. Все це призначено для того, аби надати �ожливість ко�п'ютерній програ�і доступу та дина�ічної �одифікації структури, з�істу та офор�лення доку�ента.[1][2]
Разо� із поширення� та розвитко� вебтехнологій і вебпереглядачів почали з'являтись різні, часто несу�існі інтерфейси роботи із HTML доку�ента�и в інтерпретаторах JavaScript, вбудованих у вебпереглядачі. Це спонукало World Wide Web Consortium (W3C) узгодити та визначити низку стандартів, які отри�али назву W3C Document Object Model (W3C DOM). Специфікації W3C не залежать від платфор�и або �ови програ�ування.
Через те, що структура доку�ента представляється у вигляді дерева, повний з�іст доку�ента аналізується та зберігається в па�'яті ко�п'ютера. То�у, DOM підходить для застосувань в програ�ах, які ви�агають багаторазовий доступ до еле�ентів доку�ента в довільно�у порядку. В разі, якщо треба лише послідовний або одноразовий доступ до еле�ентів доку�ента, реко�ендується, для пришвидшення перероблення та з�еншення обсягів необхідної па�'яті ко�п'ютера, використовувати послідовну �одель роботи зі структуровани�и доку�ента�и (SAX).
Стандарти DOM

Починаючи з 1998 року DOM визнається стандарто� W3C. Відтоді, його було багаторазово розширено та вдосконалено. Існують кілька версій DOM, які отри�али назву рівнів (англ. Level). Кожен рівень складається із декількох обов'язкових та необов'язкових �одулів. Для того, щоб стверджувати про підтри�ку DOM певного рівня, програ�а �ає задовольняти всі� ви�ога� стандарту DOM заявленого рівня, та всі� ви�ога� нижчих рівнів. Також, реалізація інтерфейсу �оже підтри�увати певні розширення, якщо вони не суперечать ви�ога� стандарту. У 2005 році, рівні 1 та 2 (Level 1, Level 2) та деякі �одулі 3-го рівня (Level 3) було визнано як W3C Recommendation, що означає, що вони набули кінцевої фор�и.
- Level 0
- Не було стандартизовано, став основою для появи DOM Level 1. Як приклад �ожна навести DHTML Object Model, або реалізацію DOM в вебпереглядачах Netscape ранніх версій.
- Level 1
- Обхід структури (дерева) доку�ента (HTML та XML), та �одифікація з�істу (включаючи додавання еле�ентів). Також включаються специфічні еле�енти HTML.
- Level 2
- Підтри�ка просторів і�ен XML, фільтрованих представлень та подій.
- Level 3
- Складається із 6 різних специфікацій:
- DOM Level 3 Core;
- DOM Level 3 Load and Save;
- DOM Level 3 XPath;
- DOM Level 3 Views and Formatting;
- DOM Level 3 Requirements;
- DOM Level 3 Validation.
Реалізація DOM у веббраузерах
Враховуючи суттєві чинні від�інності у реалізації DOM у веббраузерах, серед програ�істів розповсюджена звичка перевіряти дієздатність тих чи інших �ожливостей DOM для кожного з браузерів, і тільки поті� використовувати їх. Код нижче ілюструє �ожливість перевірки стандартів W3CDOM перед ти� як запускати код, що залежить від результату перевірки.
if (document.getElementById && document.getElementsByTagName) {
// якщо �етоди getElementById та getElementsByTagName
// існують, то �ожна з �айже впевнено сподіватись на підтри�ку W3CDOM.
obj = document.getElementById("navigation")
// далі йде інший код з використання� �ожливостей W3CDOM.
// .....
}
Ще один фраг�ент коду JavaScript, що дозволяє перевірити заявлену підтри�ку різних доповнень DOM у відповідно�у браузері.
<html>
<head>
<title>Test DOM Implementation</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript">
function domImplementationTest() {
var featureArray = ['HTML', 'XML', 'Core', 'Views',
'StyleSheets', 'CSS', 'CSS2', 'Events',
'UIEvents', 'MouseEvents', 'HTMLEvents',
'MutationEvents', 'Range', 'Traversal'];
var versionArray = ['1.0', '2.0', '3.0'];
var i;
var j;
if (document.implementation && document.implementation.hasFeature){
document.write('<table border="1" cellpadding="2" style="border-collapse:collapse;">');
// header of table
document.write('<tr>');
document.write('<td>' + 'Підтри�ка доповнення ' + '</td>')
for (j = 0; j < versionArray.length; j++) {
document.write('<td>'+ 'версія ' + versionArray[j] + '</td>');
}
document.write('</tr>');
// content of table
for (i = 0; i < featureArray.length; i++){
document.write('<tr>');
document.write('<td>' + featureArray[i] + '</td>');
for (j = 0; j < versionArray.length; j++) {
var res = document.implementation.hasFeature(featureArray[i], versionArray[j]);
document.write('<td style="background-color:' + (res ? 'blue' : 'red') + '; color:white;">'+ res + '</td>');
}
document.write('</tr>');
}
document.write('</table>');
}
}
</script>
</head>
<body>
<h1>Перевірка доповнень DOM</h1>
<script type="text/javascript">
domImplementationTest();
</script>
</body>
</html>
Модель доку�ента

Після аналізу структурованого доку�ента, будується його представлення у вигляді дерева. Дерево, в �оделі DOM, складається із �ножини зв'язних вузлів (Node) різних типів. Як правило, розрізняють вузли наступних типів:
- ДокуР�ент (Document) вЂ” РєРѕСЂС–РЅСЊ дерева, представляє цілий РґРѕРєСѓР�ент.
- ФрагР�ент РґРѕРєСѓР�ента (DocumentFragment) вЂ” РІСѓР·РѕР», СЏРєРёР№ С” коренеР� піддерева РѕСЃРЅРѕРІРЅРѕРіРѕ РґРѕРєСѓР�ента.
- ЕлеР�ент (Element) вЂ” представляє РѕРєСЂРµР�РёР№ елеР�ент HTML або XML РґРѕРєСѓР�ента.
- Атрибут (Attr) вЂ” представляє атрибут елеР�ента.
- Текст (Text) вЂ” представляє текстові дані, СЏРєС– Р�істяться РІ елеР�енті або атрибуті.
Стандарто� визначаються і деякі інші типи вузлів у �оделі доку�ента.
Вузли деяких типів �ожуть �ати гілки, інші ж �ожуть бути лише листа�и дерева. Спеціальні �етоди об'єктів вузлів дають �ожливість обходу дерева.
Специфікації
- Document Object Model (DOM) Level 1 Specification
- Level 2 Recommendations:
- Document Object Model (DOM) Level 2 Core Specification
- Document Object Model (DOM) Level 2 Views Specification
- Document Object Model (DOM) Level 2 Events Specification
- Document Object Model (DOM) Level 2 Style Specification
- Document Object Model (DOM) Level 2 Traversal and Range Specification
- Document Object Model (DOM) Level 2 HTML Specification
- Level 3 Recommendations:
- Level 3 Working Group Notes:
Див. також
- DOM Events
- SAX вЂ” Набір API для послідовної РѕР±СЂРѕР±РєРё структурованих РґРѕРєСѓР�ентів.
Посилання
- Сторінка DOM на W3.org
- Technology Reports
- Скрипти W3C DOM та таблиці су�існості (Quirksmode)
- Gecko DOM Reference
- khtml Library API Documentation
- DOM підручник вЂ” Р· прикладаР�Рё С– вправаР�Рё. (СЂРѕСЃ.)
- Інтерфейси для…
Попередній перегляд при�іток
- � Document Object Model (DOM): definition, structure and example. IONOS Digital Guide (англ.). Процитовано 27 січня 2023.
- � DOM Standard. dom.spec.whatwg.org. Процитовано 27 січня 2023.