Document Object Model
DOM (akronym anglického Document Object Model – objektový 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ě a 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 2, Level 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
- Document Object Model (DOM) Level 1 Specification (W3C Recommendation)
Level 2
- Document Object Model (DOM) Level 2 Core Specification (W3C Recommendation)
- Document Object Model (DOM) Level 2 Views Specification (W3C Recommendation)
- Document Object Model (DOM) Level 2 Events Specification (W3C Recommendation)
- Document Object Model (DOM) Level 2 Style Specification (W3C Recommendation)
- Document Object Model (DOM) Level 2 Traversal and Range Specification (W3C Recommendation)
- Document Object Model (DOM) Level 2 HTML Specification (W3C Recommendation)
Level 3
- Document Object Model (DOM) Level 3 Core Specification (W3C Recommendation)
- Document Object Model (DOM) Level 3 Load and Save Specification (W3C Recommendation)
- Document Object Model (DOM) Level 3 Validation Specification (W3C Recommendation)
Level 4
- W3C DOM4 (W3C Last Call Working Draft)
Další (vývoj ukončen, nikdy nevydané)
- Document Object Model (DOM) Level 1 Specification (Second Edition) (W3C Working Draft) – převedeno na Level 2
- Document Object Model (DOM) Requirements (W3C Working Group Note)
- Document Object Model (DOM) Level 3 Views and Formatting Specification (W3C Working Group Note)
- Document Object Model (DOM) Level 3 Abstract Schemas Specification (W3C Note)
- Document Object Model (DOM) Level 3 Events Specification (W3C Working Draft) – převedeno na Level 4
- Document Object Model (DOM) Level 3 XPath Specification (W3C Working Group Note)
Externí odkazy
- Obrázky, zvuky či videa k tématu Document Object Model na Wikimedia Commons
- (anglicky) Stránky W3C o DOM
- (anglicky) Přehled specifikací W3C
- (anglicky) Aktuální specifikace (Level 4)
- (anglicky) Přehled o DOM na stránkách MDN
- (anglicky) Podpora DOM v prohlížečích