Об'єктна модель документа (англ. Document Object Model, DOM) — специфікація прикладного програмного інтерфейсу для роботи зі структурованими документами (як правило, документами XML). Визначається ця специфікація консорціумом W3C.
З точки зору об'єктноорієнтованого програмування, DOM визначає класи, методи та цих методів для аналізу структури документів та роботи із представленням документів у вигляді дерева. Все це призначено для того, аби надати можливість комп'ютерній програмі доступу та динамічної модифікації структури, змісту та оформлення документа.
Разом із поширенням та розвитком вебтехнологій і вебпереглядачів почали з'являтись різні, часто несумісні інтерфейси роботи із 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
- Підтримка , фільтрованих представлень та .
- 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:
- Document Object Model (DOM) Level 3 Core Specification
- Document Object Model (DOM) Level 3 Load and Save Specification
- Document Object Model (DOM) Level 3 Validation Specification
- Level 3 Working Group Notes:
- Document Object Model (DOM) Level 3 XPath Specification
- Document Object Model (DOM) Level 3 Views and Formatting Specification
- Document Object Model (DOM) Requirements
Див. також
- SAX — Набір API для послідовної обробки структурованих документів.
Посилання
- Сторінка DOM на W3.org
- Technology Reports
- Скрипти W3C DOM та таблиці сумісності (Quirksmode)
- DOM підручник — з прикладами і вправами. (рос.)
- Інтерфейси для…
- Java — W3C Document Object Model Level 2
- Pascal (Kylix)
- Perl
- PHP
- TCL
- Document Object Model (DOM): definition, structure and example. IONOS Digital Guide (англ.). Процитовано 27 січня 2023.
- DOM Standard. dom.spec.whatwg.org. Процитовано 27 січня 2023.
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Ob yektna model dokumenta angl Document Object Model DOM specifikaciya prikladnogo programnogo interfejsu dlya roboti zi strukturovanimi dokumentami yak pravilo dokumentami XML Viznachayetsya cya specifikaciya konsorciumom W3C Z tochki zoru ob yektnooriyentovanogo programuvannya DOM viznachaye klasi metodi ta cih metodiv dlya analizu strukturi dokumentiv ta roboti iz predstavlennyam dokumentiv u viglyadi dereva Vse ce priznacheno dlya togo abi nadati mozhlivist komp yuternij programi dostupu ta dinamichnoyi modifikaciyi strukturi zmistu ta oformlennya dokumenta Razom iz poshirennyam ta rozvitkom vebtehnologij i vebpereglyadachiv pochali z yavlyatis rizni chasto nesumisni interfejsi roboti iz HTML dokumentami v interpretatorah JavaScript vbudovanih u vebpereglyadachi Ce sponukalo World Wide Web Consortium W3C uzgoditi ta viznachiti nizku standartiv yaki otrimali nazvu W3C Document Object Model W3C DOM Specifikaciyi W3C ne zalezhat vid platformi abo movi programuvannya Cherez te sho struktura dokumenta predstavlyayetsya u viglyadi dereva povnij zmist dokumenta analizuyetsya ta zberigayetsya v pam yati komp yutera Tomu DOM pidhodit dlya zastosuvan v programah yaki vimagayut bagatorazovij dostup do elementiv dokumenta v dovilnomu poryadku V razi yaksho treba lishe poslidovnij abo odnorazovij dostup do elementiv dokumenta rekomenduyetsya dlya prishvidshennya pereroblennya ta zmenshennya obsyagiv neobhidnoyi pam yati komp yutera vikoristovuvati poslidovnu model roboti zi strukturovanimi dokumentami SAX Standarti DOMWHATWG DOM Pochinayuchi z 1998 roku DOM viznayetsya standartom W3C Vidtodi jogo bulo bagatorazovo rozshireno ta vdoskonaleno Isnuyut kilka versij DOM yaki otrimali nazvu rivniv angl Level Kozhen riven skladayetsya iz dekilkoh obov yazkovih ta neobov yazkovih moduliv Dlya togo shob stverdzhuvati pro pidtrimku DOM pevnogo rivnya programa maye zadovolnyati vsim vimogam standartu DOM zayavlenogo rivnya ta vsim vimogam nizhchih rivniv Takozh realizaciya interfejsu mozhe pidtrimuvati pevni rozshirennya yaksho voni ne superechat vimogam standartu U 2005 roci rivni 1 ta 2 Level 1 Level 2 ta deyaki moduli 3 go rivnya Level 3 bulo viznano yak W3C Recommendation sho oznachaye sho voni nabuli kincevoyi formi Level 0 Ne bulo standartizovano stav osnovoyu dlya poyavi DOM Level 1 Yak priklad mozhna navesti DHTML Object Model abo realizaciyu DOM v vebpereglyadachah Netscape rannih versij Level 1 Obhid strukturi dereva dokumenta HTML ta XML ta modifikaciya zmistu vklyuchayuchi dodavannya elementiv Takozh vklyuchayutsya specifichni elementi HTML Level 2 Pidtrimka filtrovanih predstavlen ta Level 3 Skladayetsya iz 6 riznih specifikacij 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 Realizaciya DOM u vebbrauzerahVrahovuyuchi suttyevi chinni vidminnosti u realizaciyi DOM u vebbrauzerah sered programistiv rozpovsyudzhena zvichka pereviryati diyezdatnist tih chi inshih mozhlivostej DOM dlya kozhnogo z brauzeriv i tilki potim vikoristovuvati yih Kod nizhche ilyustruye mozhlivist perevirki standartiv W3CDOM pered tim yak zapuskati kod sho zalezhit vid rezultatu perevirki if document getElementById amp amp document getElementsByTagName yaksho metodi getElementById ta getElementsByTagName isnuyut to mozhna z majzhe vpevneno spodivatis na pidtrimku W3CDOM obj document getElementById navigation dali jde inshij kod z vikoristannyam mozhlivostej W3CDOM She odin fragment kodu JavaScript sho dozvolyaye pereviriti zayavlenu pidtrimku riznih dopovnen DOM u vidpovidnomu brauzeri lt html gt lt head gt lt title gt Test DOM Implementation lt title gt lt meta http equiv Content Type content text html charset windows 1251 gt lt script type text javascript gt 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 amp amp document implementation hasFeature document write lt table border 1 cellpadding 2 style border collapse collapse gt header of table document write lt tr gt document write lt td gt Pidtrimka dopovnennya lt td gt for j 0 j lt versionArray length j document write lt td gt versiya versionArray j lt td gt document write lt tr gt content of table for i 0 i lt featureArray length i document write lt tr gt document write lt td gt featureArray i lt td gt for j 0 j lt versionArray length j var res document implementation hasFeature featureArray i versionArray j document write lt td style background color res blue red color white gt res lt td gt document write lt tr gt document write lt table gt lt script gt lt head gt lt body gt lt h1 gt Perevirka dopovnen DOM lt h1 gt lt script type text javascript gt domImplementationTest lt script gt lt body gt lt html gt Model dokumentaPriklad vidobrazhennya fragmentu DOM dereva HTML dokumenta v programi DOM Inspector iz Mozilla Suite Pislya analizu strukturovanogo dokumenta buduyetsya jogo predstavlennya u viglyadi dereva Derevo v modeli DOM skladayetsya iz mnozhini zv yaznih vuzliv Node riznih tipiv Yak pravilo rozriznyayut vuzli nastupnih tipiv Dokument Document korin dereva predstavlyaye cilij dokument Fragment dokumenta DocumentFragment vuzol yakij ye korenem piddereva osnovnogo dokumenta Element Element predstavlyaye okremij element HTML abo XML dokumenta Atribut Attr predstavlyaye atribut elementa Tekst Text predstavlyaye tekstovi dani yaki mistyatsya v elementi abo atributi Standartom viznachayutsya i deyaki inshi tipi vuzliv u modeli dokumenta Vuzli deyakih tipiv mozhut mati gilki inshi zh mozhut buti lishe listami dereva Specialni metodi ob yektiv vuzliv dayut mozhlivist obhodu dereva SpecifikaciyiDocument 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 Document Object Model DOM Level 3 Core Specification Document Object Model DOM Level 3 Load and Save Specification Document Object Model DOM Level 3 Validation Specification Level 3 Working Group Notes Document Object Model DOM Level 3 XPath Specification Document Object Model DOM Level 3 Views and Formatting Specification Document Object Model DOM RequirementsDiv takozhSAX Nabir API dlya poslidovnoyi obrobki strukturovanih dokumentiv PosilannyaStorinka DOM na W3 org Technology Reports Skripti W3C DOM ta tablici sumisnosti Quirksmode DOM pidruchnik z prikladami i vpravami ros Interfejsi dlya Java W3C Document Object Model Level 2 Pascal Kylix Perl PHP TCL Document Object Model DOM definition structure and example IONOS Digital Guide angl Procitovano 27 sichnya 2023 DOM Standard dom spec whatwg org Procitovano 27 sichnya 2023