Document Object Model

DOM (akronym anglického Document Object Modelobjektový model dokumentu) je objektově orientovaná reprezentace XML nebo HTML dokumentu. DOM je API umožňující přístup či modifikaci obsahu, struktury, nebo stylu dokumentu, či jeho částí.

Původně měl každý webový prohlížeč své vlastní specifické rozhraní k manipulaci s HTML elementy pomocí JavaScriptu. Vzájemná nekompatibilita těchto rozhraní však přivedla W3C k myšlence standardizace, a tak vznikl W3C Document Object Model (zkráceně W3C DOM). Tato specifikace je platformnějazykově nezávislá. Předchozí specifická rozhraní byla nazvána přechodný DOM (anglicky Intermediate DOM).

DOM umožňuje přístup k dokumentu jako ke stromu, což je zároveň datová struktura používaná ve většině XML parserů (Xerces, MSXML) a XSL procesorů (Xalan). Tato technologie, nazývaná grove (Graph Representation Of property ValuEs), vyžaduje nahrání celého parsovaného dokumentu do paměti, z čehož plyne, že její optimální použití je tam, kde je k jednotlivým elementům dokumentu přistupováno v náhodném pořadí nebo opakovaně. Existuje i alternativní technologie pro případ, že je potřeba postupná, nebo jednorázová úprava – sekvenční model SAX, který má v těchto případech výhodu rychlejšího zpracování a nižší paměťové náročnosti.

Dějiny

Historie objektového modelu dokumentu se prolíná s historií „válek prohlížečů“ na konci 90. let mezi Netscape Navigator a Microsoft Internet Explorer a také s historií JavaScriptu a JScript, prvních skriptovacích jazyků, které byly široce implementovány v JavaScriptové enginy webových prohlížečů.

JavaScript byl uvolněn společností Netscape Communications v roce 1995 v rámci Netscape Navigator 2.0. Konkurent Netscape, Microsoft, následující rok vydal Internet Explorer 3.0 s reimplementací JavaScriptu nazvanou JScript. JavaScript a JScript umožňují webovým vývojářům vytvářet webové stránky s interaktivitou na straně klienta. Omezené možnosti detekce událostí generovaných uživateli a úpravy dokumentu HTML v první generaci těchto jazyků se nakonec staly známými jako „DOM Level 0“ nebo „Starší DOM“. Pro DOM Level 0 nebyl vyvinut žádný nezávislý standard, ale byl částečně popsán ve specifikacích pro HTML 4.

Starší DOM byl omezen na druhy prvků, ke kterým bylo možné přistupovat. Na prvky formuláře, odkazu a obrázku lze odkazovat pomocí hierarchického názvu, který začíná objektem kořenového dokumentu. Hierarchický název může využívat buď názvy, nebo sekvenční index procházených prvků. Vstupní prvek formuláře může být například přístupný jako

document.formName.inputName nebo document.forms[0].elements[0].

DOM Level

Specifikace W3C DOM jsou rozděleny do několika úrovní (DOM level), z nichž každá obsahuje povinné a volitelné moduly. K tomu, aby nějaká aplikace mohla prohlásit, že podporuje určitý DOM level, musí implementovat všechny požadavky dané úrovně a všech nižších. Aplikace mohou též podporovat specifická rozšíření (anglicky vendor-specific extensions) za podmínky, že nejsou v konfliktu s W3C standardy. V současnosti (leden 2014) existují čtyři úrovně (Level 1, Level 2Level 3 a Level 4), z nichž první tři jsou již ve stádiu W3C Recommendation.

Level 0

Podpora Intermediate DOM, jenž existoval před vytvořením DOM Level 1. Například DHTML Object Model vyvinutý firmou Microsoft, nebo nepojmenovaný Intermediate DOM od Netscape. Level 0 není formální specifikací publikovanou W3C, ale používá se jako srozumitelná zkratka odkazující na věci existující před standardizačním procesem.

Level 1

Navigace v DOMu (HTML a XML) dokumentu (resp. jeho stromové struktuře) a manipulace s obsahem (včetně přidávání elementů). Specifické elementy HTML jsou obsaženy také.

Level 2

Podpora jmenných prostorů (anglicky XML namespace), událostí a filtrovaných pohledů.

Level 3

Standardizovaný mechanismus načítání a ukládání a podpora XML schémat[1]. Navíc umožňuje například dynamické vkládání obsahu do dokumentu a přidává některé nové metody a vlastnosti.[2]

Level 4

Vývoj se zaměřuje na sloučení předchozích standardů DOM Level 3 Core, Element Traversal, Selectors API Level 2, DOM Level 3 Events a DOM Level 2 Traversal and Range a jejich zjednodušení a přiblížení již existujícím standardům, především specifikacím JavaScriptu a HTML5. Specifikace dále zjednoduší časté DOM operace.[3]

Specifikace

Všechny dokumenty jsou v angličtině

Level 1

Level 2

Level 3

Level 4

Další (vývoj ukončen, nikdy nevydané)

Reference

Související články

Externí odkazy