DOM
Document Object Model (DOM) je objektový model dokumentu z dílen W3C. S jeho postupným rozšiřováním až na DOM Level 3 se z něj stává obecně použitelný model schopný obsáhnout snad všechny možné druhy dokumentů. V DOMu lze zachytit data, rozhraní datových zdrojů, nebo třeba popis uživatelského rozhraní.
DOM 0
Funkcionalita ekvivalentní Netscape Navigatoru 3.0 and MSIE 3.0 se neformálně označuje jako DOM 0. Nejedná se však o standard, spíš o jakési zachycení status quo a nalezení společného jmenovatele, který má být postupně pohlcen funkcionalitou standardu DOM 1 a následujících.
DOM 1
DOM Level 1 je platformně a jazykově nezávislé rozhraní pro manipulaci s dokumentem. Základní částí je tzv. Core, popisující dokument jako stromovou strukturu uzlů ( Node
) různého typu. Každý typ uzlu má vlastní interface, poskytující specializované funkce. Definuje se datový typ DOMString
. Pro DOM 1 je definováno mapování do jazyků IDL, Java a ECMA Script.
Návrh standardu DOM je modulární, skládá se z povinného základu, pojmenovaného Core, a volitelně implementovatelných doplňkových modulů, tzv. features
(rysů). Interface DOMImplementation
obsahuje metodu hasImplementation
umožňující zjistit, zda je daný rys implementován — prvním parametrem je case insensitive název rysu, druhým číslo verze. Specifikace DOM Level 1 definuje rysy pro XML a HTML: hasFeature("XML","1.0")
,
hasFeature("XHTML","1.0")
DOM 2
DOM Level 2 navazuje na DOM 1. Rozšiřuje všechna stávající rozhraní DOM 1, včetně Core ( hasFeature("Core","2.0")
), a přidává nové interfacy pro XML. Navíc přichází s novým datovým typem DOMTimeStamp
a dalšími rysy:
- Views — interfacy umožňující dynamicky měnit reprezentaci dokumentu, podobné view v relační databázi
hasFeature("Views","2.0")
- Events — interfacy poskytující obecný systém událostí a definující standardní množinu událostí, společná podmnožina událostí DOM 0; obsahuje události UI, myši a změny v dokumentu, neobsahuje události klávesnice
hasFeature("Events","2.0")
- Style — interface umožňující dynamicky měnit obsah a styl dokumentu;
hasFeature("StyleSheets","2.0")
(obecné rozhraní),hasFeature("CSS","2.0")
(pro CSS) - Traversal and Range — traversal poskytuje interfacy pro selektivní procházení dokumentu (
TreeWalker
,NodeIterator
,NodeFilter
), range umožňuje definovat v dokumentu oblast jako obsah mezi dvěma hranicemi a pracovat s ní (kopírovat, mazat, vkládat,..)hasFeature("Travesral","2.0")
,hasFeature("Range","2.0")
DOM 3
DOM Level 3 je v současnosti se rodící standard, který posouvá možnosti DOM 2 na cestě k využití v informačních systémech. Rozšiřuje Core ( hasFeature("Core","3.0")
). Events obohacuje o TextEvent
( hasFeature("TextEvents","3.0")
), obecnou textovou událost, která je nadmnožinou klávesových událostí. Přidává také datové typy DOMUserData
(reference na aplikační/uživatelský typ) a DOMObject
(reference na aplikační objekt). Výčet nových rysů je víc než zajímavý:
- Load and Save —interface umožňující dynamicky měnit obsah, strukturu a styl dokumentu
hasFeature("LS-Load","3.0")
- Validation — interfacy umožňující získat informace o dokumentu a jeho gramatice
hasFeature("VAL-DOC","3.0")
- XPath — umožňuje XPath adresaci uzlů DOM
hasFeature("XPath","3.0")
název | implementuje | licence | platformy |
---|---|---|---|
msxml | DOM 2 – Core, XML | Microsoft | .Net, Windows |
gdome2 | DOM 2 – Core, XML, Events | LGPL | C; UNIX/Linux |
XML4C |
DOM 2 – Core, XML, Traversal and Range; |
Apache Software License 1.1 | C++; UNIX/Linux, Windows; Xerces C++ s podporou ICU 2.2 |
Mozilla DOM | DOM 2 – Core, Views, s chybami Events, Style, Traversal-Range, Views | Mozilla Public License | C++; UNIX/Linux, Windows, … |
Příště si povídání o nových technologiích, které změní svět, dokončíme.