Continguts:

1. Introducció
1.1. Continguts d'aquest manual
2. El què és el Model d'Objecte del Document
3. El què no és el Model d'Objecte del Document
4. D'on va venir el Model d'Objecte del Document
5. Les entitats i el Nucli del DOM
6. Interfícies i implementacions del DOM
7. Limitacions del Nivell 1
1. Introducció
El Model d'Objecte del Document (DOM, de forma abreujada) és una interfície de programació d'aplicacions, API (Application Programming Interface), per a documents HTML i XML.

El DOM defineix l'estructura lògica dels documents i la manera en què un document és accedit i manipulat. En l'especificació del DOM, el terme "document" és usat en el sentit més ampli - cada cop més, l'XML està sent usat com una forma de representar molts tipus diferents d'informació que poden ser emmagatzemats en diversos sistemes i molta d'aquesta informació tradicionalment es veuria com a dades més que com a documents. Tot i això, l'XML presenta aquestes dades com a documents i es pot utilitzar el DOM per a manipular-les.

Amb el DOM els programadors poden construir documents, navegar per la seva estructura i afegir, modificar o esborrar elements i contingut. Qualsevol cosa que es pugui trobar en un document HTML o XML pot ser accedida, canviada, esborrada o afegida utilitzant el Model d'Objecte del Document, amb unes poques excepcions - en particular, les interfícies del DOM pels subconjunts interns i externs de l'XML no han estat encara especificades.

Com a especificació del W3C, un objectiu important del Model d'Objecte del Document és oferir una interfície estàndard de programació que pugui ser utilitzada en una àmplia varietat d'entorns i d'aplicacions. El DOM està dissenyat per a ser utilitzat amb qualsevol llenguatge de programació.

A fi de proporcionar una especificació de les interfícies del DOM precisa i independent de llenguatge, s'ha escollit definir les especificacions en el llenguatge IDL d'OMG (Interface Definition Language, de l'OMG), tal i com està definit en l'especificació del CORBA 2.2. A més de l'especificació de l'IDL d'OMG, es proporcionen lligams de llenguatge per a Java i ECMAScript (un llenguatge d'script estàndard basat en JavaScript i JScript).

Nota1. Un IDL és un Llenguatge de Definició d'Interfícies (Interface Definition Language) i s'utilitza per a definir les interfícies per a accedir i operar sobre objectes. Exemples d'IDLs són l'IDL de l'Object Management Group (IDL d'OMG), l'IDL de Microsoft, i l'IDL de Java de Sun.

Nota2. L'IDL d'OMG només s'utilitza com a una manera independent de llenguatge i amb una implementació neutral per a especificar interfícies. Es podrien haver utilitzat altres varis IDLs. En general, els IDLs estan dissenyats per a entorns específics de computació. El DOM pot ser implementat en qualsevol entorn de computació i no requereix els temps d'execució dels lligams entre objectes generalment associats amb tals IDLs.

1.1. Continguts d'aquest manual
Aquesta secció del Manual d'HTML Dinàmic es podria definir com un manual del DOM. Així, els documents que conformen aquest manual són:


DOM
És el present document. Dóna una explicació del què és el Model d'Objecte del Document i introdueix els dos documents següents.
1. Nivell 1 del DOM - Nucli
Conté l'especificació de les interfícies nucli del DOM, Nivell 1. Les interfícies nucli del DOM estan composades per les interfícies fonamentals i les interfícies exteses.
2. Nivell 1 del DOM - HTML
Conté l'especificació dels objectes i mètodes del DOM (Nivell 1) específics per a documents HTML.
Articles sobre el DOM
És un recull de fragments d'articles d'autor trobats a Internet i que parlen del significat i el rol del DOM.
2. El què és el Model d'Objecte del Document
El DOM és una API de programació per a documents. S'assimila molt a l'estructura dels documents que modela. Per exemple, considerem aquesta taula, extreta d'un document HTML:
	<TABLE>
	<TBODY> 
	   <TR> 
	      <TD>E. Hemingway</TD>
	      <TD>escriptor</TD> 
	   </TR> 
	   <TR>
	      <TD>A. Einstein</TD>        
	      <TD>científic</TD> 
	   </TR> 
	</TBODY>
	</TABLE>


El DOM representa aquesta taula així:

  Fig.1


En el DOM, els documents tenen una estructura lògica la qual s'assembla molt a un arbre; per a ser més precisos, és com un "bosc" o "bosquet" el qual pot contenir més d'un arbre. No obstant, el DOM no especifica que els documents han d'estar implementats com un arbre o un bosquet i tampoc especifica com s'implementen les relacions entre els objectes. El DOM és un model lògic que pot ser implementat de la manera que sigui convenient.

En l'especificació del DOM (i, per tant, en aquest manual), s'utilitza el terme model d'estructura per a descriure la representació en arbre d'un document; s'ha evitat especialment la utilització de termes com "arbre" o "bosquet" a fi d'evitar la implicació d'una implementació en particular. Una important propietat dels models d'estructura del DOM és l'isomorfisme estructural: si dues implementacions del DOM s'utilitzen per crear una representació del mateix document, crearan el mateix model d'estructura, amb exactament els mateixos objectes i relacions.

El nom "Model d'Objecte del Document" es va triar perquè és un "model d'objecte" en el sentit tradicional del disseny orientat a objecte: els documents es modelen utilitzant objectes i el model inclou no només l'estructura d'un document, sinó també el comportament d'un document i dels objectes dels quals es composa. En altres paraules, els nodes del diagrama de la Fig.1 no representen una estructura de dades, representen objectes, els quals tenen funcions i identitat.

Com a model d'objecte, el DOM identifica:


L'estructura dels documents SGML ha estat representada tradicionalment mitjançant un model abstracte de dades i no mitjançant un model d'objecte. En un model de dades abstracte, el model se centra al voltant de les dades. En els llenguatges de programació orientats a objecte, les dades mateixes es troben encapsulades en objectes que oculten les dades, protegint-les de la manipulació externa directa. Les funcions associades amb aquests objectes determinen com es poden manipular els objectes i són part del model d'objecte.

El Model d'Objecte del Document actualment consta de dues parts: el Nucli del DOM i el DOM de l'HTML. El Nucli del DOM representa la funcionalitat usada pels documents XML i també serveix de base per al DOM de l'HTML. Una implementació acatadora del DOM ha d'implementar totes les interfícies fonamentals que es troben en el capítol del Nucli amb la semàntica tal i com està definida. A més, ha d'implementar al menys una de les interfícies del DOM de l'HTML i de les exteses (XML) amb la semàntica tal i com està definida.

Per a fer més comprensibles les funcions del DOM i la seva utilitat en l'HTML Dinàmic s'ha fet un recull de diversos articles referents el DOM interessants trobats a Internet que parlen del Model d'Objecte del Document d'una manera més entenedora i intuïtiva. Aquests articles donaran una visió més pràctica del DOM (amb referències als navegadors NS i MSIE, al JavaScript, etc.) prèvia a una posterior lectura de la seva especificació.
3. El què no és el Model d'Objecte del Document
A fi de donar un significat més precís del DOM i distingir-lo d'altres sistemes que pot semblar que s'hi assimilen, s'han establert els següents punts explicatius:

4. D'on va venir el Model d'Objecte del Document
El DOM es va originar com una especificació per a permetre que els scripts JavaScript i els programes Java fossin portables entre els navegadors de la Xarxa. L'"HTML Dinàmic" va ser l'ancestre immediat del Model d'Objecte del Document i va ser pensat originàriament en gran part en termes dels navegadors. Tanmateix, quan el Grup de Treball del DOM es va formar al W3C, també estava composat per venedors d'altres dominis, incloent-hi editors d'HTML o XML i dipòsits de documents. Varis d'aquests venedors havien treballat amb l'SGML abans que es desenvolupés l'XML; a conseqüència d'això, el DOM ha estat influït per l'SGML Groves i l'estàndard HyTime. Alguns d'aquests venedors també havien desenvolupat els seus propis models d'objecte pels documents a fi de proporcionar una API pels editors de SGML/XML o els dipòsits de documents, i aquests models d'objecte també han influït el DOM.
5. Les entitats i el Nucli del DOM
En les interfícies fonamentals del DOM no hi ha objectes que representin entitats. Les referències a caràcters numèrics i les referències a les entitats predefinides en HTML i XML, són substituïdes per l'únic caràcter que constitueix la substitució de l'entitat. Per exemple, a:
	<p>Això és un gos &amp; un gat</p>
"&amp;" serà reemplaçat pel caràcter "&" i el text de dins de l'element P formarà una única seqüència contínua de caràcters. Com que les referències a caràcters numèrics i les entitats predefinides estan reconegudes com a tals en les seccions CDATA, o els elements SCRIPT i STYLE en HTML, no són reemplaçats pel caràcter únic al que fan referència. Si l'exemple de més amunt estigués englobat dins una secció CDATA, el "&amp;" no s'hauria reemplaçat pel "&" i el <p> tampoc estaria reconegut com a un tag. La representació de les entitats generals, tant internes com externes, està definida dins de les interfícies exteses (XML) de l'especificació de Nivell 1.

Nota. Quan una representació del DOM d'un document està dividida en sèries de text XML o HTML, les aplicacions necessitaran validar cada caràcter de les dades del text per veure si necessita ser "escapat" usant una entitat numèrica o predefinida. El fet de no validar podria donar com a resultat HTML o XML invàlid. A més, les implementacions haurien d'estar alerta del fet que si aquesta divisió en sèries de text en una codificació de caràcters ("charset") no cobreix completament la ISO 10646 pot fallar si hi ha caràcters en el codi de marques o les seccions CDATA que no es troben presents en la codificació.
6. Interfícies i implementacions del DOM
El DOM especifica les interfícies que es poden utilitzar per manipular documents XML o HTML. És important adonar-se que aquestes interfícies són una abstracció - com les "classes base abstractes" en C++, són un mitjà per a especificar una manera d'accedir i manipular una representació interna de l'aplicació d'un document. Les interfícies no impliquen una implementació concreta determinada. Cada aplicació del DOM és lliure de mantenir els documents en qualsevol representació convenient, sempre i quan se suportin les interfícies mostrades en l'especificació del DOM (i, per tant, en aquest manual).

Algunes implementacions del DOM seran programes existents que utilitzen les interfícies del DOM per a tenir accés al software escrit molt abans que existís l'especificació del DOM. Per tant, el DOM està dissenyat per a evitar dependències de la implementació; detalladament:

  1. Els atributs definits en IDL no impliquen objectes concrets que han de tenir membres de dades específiques - en els enllaços de llenguatge, es tradueixen per una parella de funcions get()/set() i no per un membre de les dades. (Les funcions de només lectura només tenen una funció get() en els enllaços de llenguatge).
  2. Les aplicacions DOM poden proporcionar interfícies addicionals i objectes que no hagin estat trobats en l'especificació del DOM (i, per tant, en aquest manual) i encara ser considerades acatadores del DOM.
  3. Com que s'especifiquen interfícies i no els objectes reals que han de ser creats, el DOM no pot saber quins constructors cal cridar per a una implementació. En general, els usuaris del DOM criden els mètodes createXXX() sobre la classe Document per crear estructures de document i les implementacions del DOM creen les seves pròpies representacions internes d'aquestes estructures en les seves implementacions de les funcions createXXX().
7. Limitacions del Nivell 1
L'especificació del DOM Nivell 1 està limitada intencionadament a aquells mètodes requerits per presentar i manipular l'estructura i el contingut del document. L'objectiu pels futurs nivells de l'especificació del DOM és proporcionar:

  1. Un model d'estructura pel subconjunt intern i pel subconjunt extern.
  2. Validació vs un esquema.
  3. Control per a presentar documents via fulls d'estil.
  4. Control d'accés.
  5. Thread-safety.
  6. Events.
Tancar
Pàgina Principal
Introducció al Manual d'HTML Dinàmic
Glossari
Referències






















HTML 4.0
Introducció al manual d'HTML 4.0
Taules
Formularis
Objectes, imatges i applets
Scripts
Informació de l'idioma i sentit del text
Frames
Nous elements
Elements menyspreuats i obsolets
Fulls d'estil
Nous atributs de l'HTML 4.0
Índex d'atributs nous
Índex d'atributs menyspreuats
DTD
Annexe












Introducció als CSS
Introducció als CSS2 i al manual
Propietats CSS2
Fulls d'estil audibles
Model de caixa
Sintaxi i tipus bàsics de dades
Model de formatat visual
Detalls del model de formatat visual
Assignar valors de propietats, la cascada i l'herència
Interfície d'usuari
Efectes visuals
Text
Taules
Fonts
Contingut generat, numeració automàtica i llistes
Colors i fons
Selectors
Tipus de mitjans
Mitjans paginats
Suport de CSS2
Annexe




Introducció al DOM
DOM Nivell 1 - Nucli
DOM Nivell 1 - HTML
Articles sobre el DOM






















Programació en DHTML
Demos