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.