Š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>
slika DOM za ovaj primer

  • 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>
slika za DOM ovog primera pored


  • Č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.


Fundamentalni interfejsi: Document

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.


Poslednja izmena: петак, 3. децембар 2021, 11:51