LEKCIJA - DOM (Document Object Model)
Šta je DOM
DOM (Document Object Model) je aplikativni programski interfejs za validne HTML dokumente i dobro-formirane XML dokumente koji je definisan od strane W3C konzorcijuma.
Definiše logičku strukturu dokumenta i način pristupanja dokumentu i manipulacije dokumentom manipuliše.
DOM specifikacija koristi termin “dokument" u širokom smislu jer se mnogo različitih tipova informacija/podataka predstavlja danas pomoću XML-a koji ih sve predstavlja kao dokument.
DOM je baziran na objektnoj strukturi koja jako podseća na dokument koji modeluje.
Drugim rečima:
-
Objektni model dokumenta (Document Object Model, DOM) je interfejs koji omogućava skriptovima da dinamički pristupe i izmene sadržaj, strukturu ili stil web dokumenta
-
Elementi dokumenta predstavljaju se objektima koji imaju svoja svojstva i metode; promenom vrednosti svojstava i pozivima metoda menja se web dokument
-
DOM je nezavisan od jezika iz kojeg se koristi i od platforme na kojoj se koristi
-
DOM predstavlja sliku HTML/XML dokumenta u obliku stabla čiji su čvorovi DOM objekti
DOM: Dokument i objektna struktura
| Dokument: | DOM: |
|---|---|
<table>
<tbody>
<tr>
<td>Shady Grove</td>
<td>Aeolian</td>
</tr>
<tr>
<td>Over the River, Charlie</td>
<td>Dorian</td>
</tr>
</tbody>
</table>
|
![]() |
- Svakom delu dokumenta pridružen je zaseban DOM objekat
-
Svojstvima objekta pristupa se sa objekat.svojstvo, a metodama sa objekat.metod(parametri)
-
Svaki DOM objekat ima svoj tip (kojim su određena njegova svojstva i metode)
-
Tipovi su određeni interfejsima, a interfejsi su organizovani u hijerarhiju nasleđivanja
-
Npr. svi DOM objekti su čvorovi DOM stabla i implementiraju interfejs Node; objekti koji odgovaraju elementima dokumenta implementiraju interfejs Element koji nasleđuje interfejs Node
-
DOM objekti su međusobno povezani i čine strukturu stabla.
Svaki objekat predstavlja jedan čvor stabla.
Postoje različite vrste čvorova:
-
čvor dokumenta
-
čvor elementa
-
čvor teksta
-
čvor atributa
-
čvor komentara
| Dokument: | DOM: |
|---|---|
<html>
<head>
<title>Moj titl</title>
</head>
<body>
<a href="WebPage.html">Moj link</a>
<h1>Moj naslov</h1>
</body>
</html>
|
![]() |
-
Čvorovi u stablu su u odnosima: roditelj, dete, brat (ili sestra – na engleskom je termin sibling)
-
U stablu postoji jedinstveni čvor koji se označava kao koren.
-
Svaki čvor može da ima proizvoljan broj dece; lista dece svakog čvora je uređena.
-
List je čvor bez dece.
-
Jedan čvor je brat drugog čvora ako imaju istog roditelja.
DOM interfejsi i DOM implementacije
DOM specificira interfejse koji se mogu koristiti za rukovanje XML i HTML dokumentima.
Važno je shvatiti da su ti interfejsi apstrakcija – slično konceptu “apstraktne bazne klase" u C#, oni su sredstvo specificiranja načina pristupa i manipulacije internih reprezentacija dokumenta.
Interfejsi ne impliciraju nikakvu konkretnu implementaciju. Svaka DOM aplikacija je slobodna da dokumentima rukuje na bilo koji pogodan način sve dok su interfejsi u specifikaciji podržani.
Neke DOM implementacije će biti postojeći programi koji koriste DOM interfejse za pristup softveru pisanom mnogo pre pojave DOM specifikacije.
Fundamentalni interfejsi: Node
Interfejs Node je primarni tip podataka za ceo DOM.
Predstavlja pojedinačni čvor u stablu dokumenta.
Interfejs Node: neki atributi
Atributi nodeName, nodeValue i attributes služe kao mehanizam za pribavljanje informacija o čvoru.
U slučajevima kada nema očiglednog mapiranja atributa na specifičan tip čvora nodeType (n.pr., nodeValue za Element ili attributes za Comment), vraćena vrednost je null.
Vrednosti atributa nodeName, nodeValue i attributes zavise od tipa čvora.
Interfejs Document predstavlja ceo HTML ili XML dokument.
Konceptualno, to je koren stabla dokumenta i obezbeđuje primarni pristup podacima u dokumentu.
Kako elementi, tekstualni čvorovi, komentari, procesne instrukcije, itd. ne mogi da postoje van konteksta dokumenta, interfejs Document sadrži i metode potrebne za kreiranje tih objekata.
Kreirani objekti Node imaju atribut ownerDocument koji je pridružen dokumentu u čijem su kontekstu oni kreirani.
Fundamentalni interfejsi: Element
Interfejs Element predstavlja element u HTML ili XML dokumentu.
Elementi mogu da imaju pridružene atribute; kako interfejs Element nasleđuje interfejs Node, atributi generičkog Node atributa mogu se koristiti za nalaženje skupa svih atributa nekog elementa.
Postoje metode u interfejsu Element za nalaženje Attr objekta po imenu ili atributa po imenu.
Fundamentalni interfejs Attr
Interfejs Attr predstavlja atribut u objektu Element.
Obično su dozvoljene vrednosti atributa definisane u šemi pridruženoj dokumentu.
Attr objekti nasleđuju Node interfejs ali ih DOM ne smatra delom stabla dokumenta zato što oni, u stvari, nisu naslednički čvorovi elementa koji opisuju.
DOM posmatra atribute kao svojstva elemenata a ne kao nešto što ima identitet odvojen od elemenata kojima su pridruženi; razlog je što se tako efikasnije implementiraju odlike poput pretpostavljenih atributa pridruženih svim elementima datog tipa.
Fundamentalni interfejsi: Text
Text interfejs nasleđuje predstavlja tekstualni sadržaj (zvani character data u XML) konstrukata Element ili Attr.
Nema leksičke provere sadržaja Text čvora i, od njegove pozicije u dokumentu, neki karakteri se moraju eskejpovati korišćenjem referenci: na primer karakteri < & ako je tekstualni sadržaj deo elementa ili atributa, sekvenca karaktera]]> ako je deo elementa, dostruki navodnik " ili jednostruki navodnik ' ako su delovi atributa…
DOM: XML proširenje
Iz liste XML-DOM interfejsa izdvajamo:
Interfejs DocumentType
Svaki dokument ima atribut doctype čija je vrednost ili nula ili objekat DocumentType.
Interfejs DocumentType obezbeđuje interfejs listi entiteta koji su definisani za dokument.
Napomena: DOM Level 3 ne podržava editovanje čvorova DocumentType, odnosno DocumentType čvorovi su read-only.

