Continguts:

1.1. Visió general de les Interfícies Nucli del DOM
1.1.1. El Model d’Estructura del DOM
1.1.2. Administració de Memòria
1.1.3. Convenis dels Noms
1.1.4. L'Herència vs les Vistes Planes de l’API
1.1.5. El tipus DOMString
1.1.6. Case-sensibilitat en el DOM
1.2. Interfícies Fonamentals
1.3. Interfícies Exteses
1.1. Visió general de les Interfícies Nucli del DOM
En aquesta secció es defineix un conjunt mínim d’objectes i d’interfícies per a accedir i manipular els objectes d'un document. La funcionalitat especificada en aquesta secció (la funcionalitat Nucli) hauria de ser suficient per a permetre als desenvolupadors de software i als autors d’scripts de la xarxa tenir accés i manipular contingut HTML i XML analitzat gramaticalment, dins de productes conformats. La API Nucli del DOM també permet a la població d’un objecte Document usar només crides API del DOM; la tasca de crear l’esquelet del Document i salvar-lo persistentment es deixa per al producte que implementa la API del DOM.

1.1.1. El Model d’Estructura del DOM
El DOM presenta els documents com una jerarquia d’objectes Node els quals també implementen altres interfícies més especialitzades. Alguns tipus de nodes poden tenir nodes fill de diferents tipus, i altres són nodes fulla que no poden tenir res per sota d’ells en l’estructura del document. Els diferents tipus de nodes, i els tipus de nodes que poden tenir per fills, són els següents:


El DOM també especifica una interfície NodeList per a tractar llistes ordenades de Nodes, tals com els fills d’un Node o els elements retornats pel mètode Element.getElementsByTagName, i a més una interfície NamedNodeMap per a tractar conjunts no ordenats de nodes, referenciats pel nom dels seus atributs, tals com els atributs d’un Element. Els NodeList i els NamedNodeMap del DOM són "vius", és a dir, els canvis en l’estructura del document subjacent es reflecteixen en tots els NodeList i NamedNodeMap rellevants. Per exemple, si un usuari del DOM obté un objecte NodeList que conté els fills d’un Element, i posteriorment afegeix més fills a aquell element (o substrau els fills, o els modifica), aleshores aquells canvis es reflecteixen automàticament en el NodeList sense cap acció addicional per part de l’usuari. Així mateix, els canvis en un Node de l’arbre es reflecteixen en totes les referències a aquell Node en els NodeList i els NamedNodeMap.
1.1.2. Administració de Memòria
La majoria de les APIs definides per l'especificació del DOM (i, per tant, que es troben en aquest manual) són interfícies més que classes. Això significa que una implementació real només necessita exposar mètodes amb els noms definits i la operació especificada, no li cal implementar realment les classes que corresponen directament a les interfícies. Això permet que les APIs del DOM siguin implementades com una prima capa al capdamunt d'aplicacions del llegat amb les seves pròpies estructures de dades, o al capdamunt d’aplicacions més noves amb diferents jerarquies de classes. Això també significa que els constructors ordinaris (en el sentit de Java o de C++) no poden ser utilitzats per a crear objectes del DOM, ja que els objectes subjacents que han de ser construits poden tenir una petita relació amb les interfícies del DOM. La solució convencional a això en el disseny orientat a objecte és definir mètodes de fabricació (factory methods) els quals creen instàncies d’objectes que implementen les diverses interfícies. En el DOM Nivell 1, els objectes que implementen una interfície "X" són creats mitjançant un mètode "CreateX()" en la interfície Document; això és perquè tots els objectes del DOM resideixen dins el context d’un Document específic.

L'API del Nivell 1 del DOM no defineix una manera estàndard per a crear objectes DOMImplementation o Document; les implementacions reals del DOM han de facilitar alguna manera pròpia de llençar aquestes interfícies del DOM, i aleshores tots els altres objectes podran ser construits a partir dels mètodes Create sobre Document (o mitjançant altres diversos mètodes convenients).

Les APIs del Nucli del DOM estan dissenyades per a ser compatibles amb un ampli rang de llenguatges, incloent-hi tant els llenguatges d’script dels usuaris en general així com els llenguatges més desafiadors usats majoritàriament pels programadors professionals. Així, les APIs del DOM necessiten operar a través d’una varietat de filosofies d’administració de memòria, desde plataformes de llenguatge que no exposen en absolut l’administració de memòria a l’usuari, passant per aquelles (Java, notablement) que proporcionen constructors explícits però que no proveeixen un mecanisme automàtic de recol·lecció de desperdicis (garbage collection) per a poder reclamar automàticament la memòria que no s'utilitza, fins a aquelles (especialment C/C++) que generalment requereixen que el programador assigni espai de memòria a l'objecte de manera explícita, rastregi on sigui costum fer-ho, i l'alliberi explícitament per a la seva reutilització. Per assegurar una API consistent a través d’aquestes plataformes, el DOM no tracta en absolut els aspectes de l'administració de memòria, enlloc d’això deixa aquesta tasca a la implementació. Cap dels lligams de llenguatge explícits ideats pel Grup de Treball del DOM (per a ECMAScript i Java) no requereixen cap mètode d’administració de memòria, però els lligams del DOM per a altres llenguatges (especialment C o C++) provablement requeriran aquest tipus de suport. Aquestes extensions seran responsabilitat d’aquells que adaptin la API del DOM a un llenguatge específic, i no del Grup de Treball del DOM.
1.1.3. Convenis dels Noms
Encara que seria agradable tenir noms d’atributs i de mètodes que fossin curts, informatius, internament consistents i que resultessin familiars pels usuaris d’APIs similars, els noms tampoc haurien d'entrar en conflicte amb els noms d’APIs del llegat (legacy APIs) suportades per les implementacions del DOM. A més a més, tant IDL de OMG com ECMAScript tenen significants limitacions en la seva capacitat per a desambiguar els noms dels diferents espais de noms, la qual cosa dificulta el fet d’evitar els conflictes amb els noms curts i familiars. Per tant, els noms del DOM tendeixen a ser llargs i bastant descriptius a fi de ser únics a través de tots els entorns.

El Grup de Treball també ha procurat ser internament consistent en el seu ús de diversos termes, encara que aquestes distincions poden no ser comunes amb altres APIs. Per exemple, s'utilitza el nom de mètode "remove" quan el mètode canvia el model estructural, i el nom de mètode "delete" quan el mètode es desfà d'alguna cosa de dins del model d'estructura. El que s’esborra (delete) no es restitueix. El que se substrau (remove) pot ser restituït, quan tingui sentit restituïr-ho.
1.1.4. L'Herència vs les Vistes Planes de l’API
Les APIs Nucli del DOM presenten dos conjunts d'interfícies per a un document XML/HTML un tant diferents; l’un presenta un enfocament "orientat a objecte" amb una jerarquia d’herència, i l'altre una vista "simplificada" que permet que puguin realitzar-se totes les manipulacions a través de la interfície Node sense requerir conversions de tipus (en Java i altres llenguatges semblants al C) o crides a interfícies de consulta en entorns COM. Aquestes operacions són bastant cares en Java i COM, i és possible que s'utilitzi el DOM en entorns de rendiment crític, de manera que es permeti una funcionalitat similar utilitzant només la interfície Node. Com que molts altres usuaris trobaran més fàcil d’entendre la jerarquia d’herències que no pas l'enfocament "tot és un Node" del DOM, també s'admeten les interfícies completes de nivell superior per a aquells que prefereixin una API més orientada a objecte.

A la pràctica, això significa que hi ha una certa quantitat de redundància en la API. El Grup de Treball considera l'enfocament d'"herència" com la vista principal o primària de la API, i el conjunt de funcions completes per al Node està considerat com una funcionalitat "extra" que poden usar els usuaris, però això no elimina la necessitat de mètodes en altres interfícies que dictaria una anàlisi orientada a objecte (evidentment, quan l’anàlisi orientada a objecte produeixi un atribut o mètode que és idèntic a un de la interfície Node, no se n'especificarà un de completament redundant). Així, tot i que hi ha un atribut genèric nodeName en la interfície Node, encara hi ha un atribut tagName en la interfície Element; aquests dos atributs han de contenir el mateix valor, però el Grup de Treball considera que val la pena suportar-los ambdós, donats els diferents àmbits que la API del DOM ha de satisfer.
1.1.5. El tipus DOMString
Per a assegurar la interoperativitat, el DOM especifica el tipus DOMString tal com segueix:

1.1.6. Case-sensibilitat en el DOM
El DOM té moltes interfícies que impliquen la unificació lògica de cadenes. Els processadors d’HTML generalment assumeixen una normalització en majúscules (menys sovint, en minúscules) dels noms de coses tals com els elements, mentre que l’XML és explícitament case-sensitive. Pels propòsits del DOM, la unificació de cadenes té lloc en una base de codi de caràcter per codi de caràcter, en el valor de 16 bits d’un DOMString. D’aquesta manera, el DOM assumeix que no tindrà lloc cap normalització en el processador, abans que les estructures del DOM s’hagin construit.

Aleshores això planteja el tema de quines normalitzacions tenen lloc exactament. El grup de treball de I18N del W3C es troba en procés de definir exactament quines normalitzacions són necessàries per a les aplicacions que implementen el DOM.
1.2 Interfícies Fonamentals
Les interfícies que es troben dins d'aquesta secció es considera que són fonamentals, i han de ser implementades completament per totes les implementacions conformades del DOM, incloent-hi totes les implementacions HTML del DOM.

Les 11 interfícies fonamentals són:


A més, també es defineix una excepció (una espècie de condició d'error) anomenada DOMException la qual pot sorgir en determinades situacions de la manipulació dels objectes del DOM.
Excepció DOMException
Les operacions del DOM només causen excepcions en circumstàncies "excepcionals", és a dir, quan una operació és impossible d’executar (bé per raons lògiques, bé perquè les dades s’han perdut o bé perquè la implementació ha esdevingut inestable). En general, els mètodes del DOM retornen valors d’error específics en situacions ordinàries de processament, com poden ser els errors per sobrepassar els límits quan s’utilitza NodeList.

Les implementacions poden causar altres excepcions sota altres circumstàncies. Per exemple, les implementacions poden causar una excepció depenent d'implementació si es passa un argument null.

Alguns llenguatges i sistemes d’objecte no suporten el concepte d’excepcions. Per a aquests sistemes, les condicions d’error poden indicar-se utilitzant els mecanismes nadius d’informació d’errors. Per a alguns lligams, per exemple, els mètodes poden retornar codis d'error similars als que estan llistats en les corresponents descripcions dels mètodes.
Definició IDL
exception DOMException {
   unsigned short      code;
};

	
//ExceptionCode
   const unsigned short      INDEX_SIZE_ERR     = 1;
   const unsigned short      DOMString_SIZE_ERR = 2;
   const unsigned short      HIERARCHY_REQUEST_ERR = 3;
   const unsigned short      WRONG_DOCUMENT_ERR = 4;
   const unsigned short      INVALID_CHARACTER_ERR = 5;
   const unsigned short      NO_DATA_ALLOWED_ERR = 6;
   const unsigned short      NO_MODIFICATION_ALLOWED_ERR = 7;
   const unsigned short      NOT_FOUND_ERR      = 8;
   const unsigned short      NOT_SUPPORTED_ERR  = 9;
   const unsigned short      INUSE_ATTRIBUTE_ERR = 10;
Definició del grup ExceptionCode
Un enter que indica el tipus d'error que s'ha generat.

Constants Definides
INDEX_SIZE_ERR
Si l’índex o la mida són negatius, o són més grans que el valor permès.
DOMSTRING_SIZE_ERR
Si el rang especificat del text no hi cap dins d’un DOMString.
HIERARCHY_REQUEST_ERR
Si s’insereix algun node en un lloc on no li correspon.
WRONG_DOCUMENT_ERR
Si s’utilitza un node en un document diferent del que el va crear (aquell no el suporta).
INVALID_CHARACTER_ERR
Si s’especifica un caràcter invàlid, per exemple dins un nom.
NO_DATA_ALLOWED_ERR
Si s'ha especificat una dada per a un node que no suporta dades.
NO_MODIFICATION_ALLOWED_ERR
Si s'ha fet un intent de modificar un objecte on no es permeten modificacions.
NOT_FOUND_ERR
Si s'ha fet un intent de referenciar un node en un context on no hi existeix.
NOT_SUPPORTED_ERR
Si la implementació no suporta el tipus d’objecte sol·licitat.
INUSE_ATTRIBUTE_ERR
Si s'ha fet un intent d’afegir un atribut que ja està en ús en algun altre lloc.
Interfície DOMImplementation
La interfície DOMImplementation proveeix un nombre de mètodes per a executar operacions que són independents de qualsevol instància determinada del model d’objecte del document.

El Nivell 1 del DOM no especifica una manera de crear una instància d’un document, i per tant, la creació d’un document és una operació específica d’una implementació. S’espera que els futurs nivells de l’especificació del DOM proveïran mètodes per a crear documents directament.
Definició IDL
interface DOMImplementation {
   boolean      hasFeature(in DOMString feature,
                           in DOMString version);

};
Mètodes
hasFeature
Examina si la implementació del DOM implementa una característica específica.

Paràmetres
feature
El nom del paquet de la característica que s’ha d’examinar. En el Nivell 1, els valors legals són "HTML" i "XML" (case-insensitive).
version
Aquest és el número de la versió del nom del paquet que s’ha d’examinar. En el Nivell 1, versió 1.0, és la cadena "1.0". Si no s’especifica la versió, el fet de suportar qualsevol versió de la característica farà que el mètode retorni true.

Valors de Retorn
true si la característica és implementada en la versió especificada, false al contrari.

Aquest mètode no causa cap excepció.
Interfície DocumentFragment
DocumentFragment és un objecte Document "mínim" o "de pes lleuger". És molt comú desitjar poder extreure una porció de l’arbre d'un document o crear un nou fragment d’un document. Es pot imaginar implementar una comanda d’usuari tal com tallar o reconfigurar un document movent els fragments del seu voltant. És convenient tenir un objecte que pugui suportar aquests fragments i és bastant normal utilitzar un Node per a aquest propòsit. Com que és cert que un objecte Document podria dur a terme aquest paper, un objecte Document pot potencialment ser un objecte de pes pesant, depenent de la implementació subjacent. El que és realment necessari per a això és un objecte de pes molt lleuger. El DocumentFragment és un objecte d’aquestes característiques.

A més a més, diverses operacions - tals com inserir nodes com a fills d’un altre Node -- poden prendre objectes DocumentFragment com a arguments; això farà que tots els nodes fill del DocumentFragment siguin moguts a la llista de fills d’aquest node.

Els fills d’un node DocumentFragment són zero o més nodes que representen els cims de tots els subarbres que defineixen l’estructura del document. Els DocumentFragment no necessiten ser documents XML ben formats (encara que necessiten seguir les regles imposades sobre les entitats XML ben formades i analitzades gramaticalment, les quals poden tenir múltiples nodes del cim). Per exemple, un DocumentFragment podria tenir només un fill i aquest node fill podria ser un node Text. Un model d’estructura com aquest no representa ni un document HTML ni un document XML ben format.

Quan un DocumentFragment és inserit dins d’un Document (o certament qualsevol altre Node que pugui tenir fills) els fills del DocumentFragment, i no el DocumentFragment en sí mateix, són inserits dins el Node. Això fa que el DocumentFragment sigui molt útil quan l’usuari vol crear nodes que siguin germans; el DocumentFragment actua com a pare d’aquests nodes per tal que l’usuari pugui usar els mètodes estàndard de la interfície Node, tals com insertBefore() i appendChild().
Definició IDL
interface DocumentFragment : Node {
};
Interfície Document
La interfície Document representa el document HTML o XML sencer. Conceptualment, és l’arrel de l’arbre del document, i proporciona l’accés primari a les dades del document.

Com que els elements, els nodes de text, els comentaris, les instruccions de processament, etc., no poden existir fora del context d’un Document, la interfície Document també conté els mètodes de fabricació requerits per a crear aquests objectes. Els objectes Node creats tenen un atribut ownerDocument que els associa amb el Document dins el context del qual van ser creats.
Definició IDL
interface Document : Node {
   readonly attribute DocumentType           doctype;
   readonly attribute DOMImplementation      implementation;
   readonly attribute Element                documentElement;
   Element                    CreateElement(in DOMString tagName)
                                            raises(DOMException);
   DocumentFragment           CreateDocumentFragment();
   Text                       CreateTextNode(in DOMString data);
   Comment                    CreateComment(in DOMString data);
   CDATASection               CreateCDATASection(
                                    in DOMString data)
                                    raises(DOMException);
   ProcessingInstruction      CreateProcessingInstruction(
                                    in DOMString target, 
                                    in DOMString data)
                                    raises(DOMException);
   Attr                       CreateAttribute(
                                    in DOMString name)
                                    raises(DOMException);
   EntityReference            CreateEntityReference(
                                    in DOMString name)
                                    raises(DOMException);
   NodeList                   getElementsByTagName(
                                    in DOMString tagname);
};
Atributs
doctype
Per a XML, aquest facilita l'accés a la Definició de Tipus del Document (veure DocumentType) associada a aquest document XML. Per a documents XML sense una definició de tipus del document i per a documents HTML, aquest retorna null.
implementation
Una aplicació DOM pot usar objectes de múltiples implementacions. Aquest proveeix accés a l’objecte DOMImplementation que manipula aquest document.
documentElement
Aquest és un atribut de conveniència que permet l’accés directe al node fill que és l’element arrel del document. Per a documents HTML, aquest és l’element amb el tagName "HTML".
Mètodes
CreateElement
Crea un element del tipus especificat. Cal notar que la instància retornada implementa la interfície Element, per tant, els atributs poden ser especificats directament en l’objecte retornat. A més, si hi ha atributs coneguts amb valors per defecte, els nodes Attr que els representen són creats automàticament i associats a l'element.

Paràmetres
tagName
El nom del tipus d’element que s’ha d’instanciar. Per a XML, aquest és case-sensitive. Per a HTML, el paràmetre tagName pot ser proveït en qualsevol cas, però ha de ser transformat a la forma canònica de majúscules per la implementació del DOM.

Valors de Retorn
Un nou objecte Element.

Excepcions
DOMException
INVALID_NAME_ERR: Sorgeix si s’especifica un nom invàlid.
CreateDocumentFragment
Crea un objecte DocumentFragment buit.

Valors de Retorn
Un nou DocumentFragment.

Aquest mètode no té paràmetres.
Aquest mètode no causa cap excepció.
CreateTextNode
Crea un node Text donada la cadena especificada.

Paràmetres
data
Les dades del node.

Valors de Retorn
El nou objecte Text.

Aquest mètode no causa cap excepció.

CreateComment
Crea un node Comment donada la cadena especificada.

Paràmetres
data
Les dades pel node.

Valors de Retorn
El nou objecte Comment.

Aquest mètode no causa cap excepció.
CreateCDATASection
Crea un node CDATASection el valor del qual és la cadena especificada.

Paràmetres
data
Les dades pels continguts de CDATASection.

Valors de Retorn
El nou objecte CDATASection.

Excepcions
DOMException
NOT_SUPPORTED_ERR: Sorgeix si aquest document és un document HTML.
CreateProcessingInstruction
Crea un node ProcessingInstruction donat el nom especificat i les cadenes de dades.

Paràmetres
target
El component objectiu (target) de la instrucció de processament.
data
Les dades pel node.

Valors de Retorn
El nou objecte ProcessingInstruction.

Excepcions
DOMException
INVALID_NAME_ERR: Sorgeix si s’especifica un nom invàlid.
NOT_SUPPORTED_ERR: Sorgeix si aquest document és un document HTML.
CreateAttribute
Crea un Attr del nom donat. Cal notar que la instància de l'Attr pot aleshores ser inicialitzada en un Element usant el mètode setAttribute.

Paràmetres
name
El nom de l’atribut.

Valors de Retorn
Un nou objecte Attr.

Excepcions
DOMException
INVALID_NAME_ERR: Sorgeix si s’especifica un nom invàlid.
CreateEntityReference
Crea un objecte EntityReference.

Paràmetres
name
El nom de l’entitat que es referencia.

Valors de Retorn
El nou objecte EntityReference.

Excepcions
DOMException
NOT_SUPPORTED_ERR: Sorgeix si aquest document és un document HTML.
getElementsByTagName
Retorna un NodeList de tots els Elements amb una nom de tag donat, en l’ordre en què serien trobats en un recorregut en preordre de l’arbre del Document.

Paràmetres
tagName
El nom del tag amb el qual s’ha d’unificar. Si es dóna la cadena "*", aquest mètode retorna tots els elements del document.

Valors de Retorn
Un nou objecte NodeList que conté tots els Elements.

Aquest mètode no causa cap excepció.
Interfície Node
L’objecte Node és el tipus de dada primari per al Model d'Objecte del Document sencer. Representa un sol node en l’arbre del document. Encara que tots els objectes que implementen la interfície Node exposen els mètodes pel tractament dels fills, no tots els objectes que implementen la interfície Node poden tenir fills. Per exemple, els nodes Text no poden tenir fills, i la inserció de fills a aquest tipus de nodes causarà una DOMException.

Els atributs nodeName, nodeValue i attributes estan inclosos com un mecanisme per a obtenir informació d'un node sense haver d'arribar a la interfície específica derivada. En casos en què no hi ha una correspondència òbvia per a aquests atributs per a un nodeType específic (per ex., nodeValue per a un Element o attributes per a un Comment), aquest retorna null. Cal remarcar que les interfícies especialitzades poden contenir mecanismes addicionals i més convenients per a obtenir i fixar la informació rellevant.
Definició IDL
interface Node {
   //NodeType
   const unsigned short      ELEMENT_NODE       = 1;
   const unsigned short      ATTRIBUTE_NODE     = 2;
   const unsigned short      TEXT_NODE          = 3;
   const unsigned short      CDATA_SECTION_NODE = 4;
   const unsigned short      ENTITY_REFERENCE_NODE = 5;
   const unsigned short      ENTITY_NODE        = 6;
   const unsigned short      PROCESSING_INSTRUCTION_NODE = 7;
   const unsigned short      COMMENT_NODE       = 8;
   const unsigned short      DOCUMENT_NODE      = 9;
   const unsigned short      DOCUMENT_TYPE_NODE = 10;
   const unsigned short      DOCUMENT_FRAGMENT_NODE = 11;
   const unsigned short      NOTATION_NODE      = 12;

   readonly attribute  DOMString           nodeName;
      attribute  DOMString                 nodeValue;
                            //raises(DOMException) en inicialitzar
                            //raises(DOMException) en recuperar
   readonly attribute  unsigned short      nodeType;
   readonly attribute  Node                parentNode;
   readonly attribute  NodeList            childNodes;
   readonly attribute  Node                firstChild;
   readonly attribute  Node                lastChild;
   readonly attribute  Node                previousSibling;
   readonly attribute  Node                nextSibling;
   readonly attribute  NamedNodeMap        attributes;
   readonly attribute  Document            ownerDocument;
   Node         insertBefore(in Node newChild, 
                             in Node refChild)
                             raises(DOMException);
   Node         replaceChild(in Node newChild, 
                             in Node oldChild)
                             raises(DOMException);
   Node         removeChild(in Node oldChild)
                            raises(DOMException);
   Node         appendChild(in Node newChild)
                            raises(DOMException);
   boolean      hasChildNodes();
   Node         cloneNode(in boolean deep);
};
Definició del grup nodeType
Un enter que indica quin tipus de node és:

Constants Definides
ELEMENT_NODE
El node és un Element.
ATTRIBUTE_NODE
El node és un Attr.
TEXT_NODE
El node és un node Text.
CDATA_SECTION_NODE
El node és un CDATASection.
ENTITY_REFERENCE_NODE
El node és un EntityReference.
ENTITY_NODE
El node és un Entity.
PROCESSING_INSTRUCTION_NODE
El node és un ProcessingInstruction.
COMMENT_NODE
El node és un Comment.
DOCUMENT_NODE
El node és un Document.
DOCUMENT_TYPE_NODE
El node és un DocumentType.
DOCUMENT_FRAGMENT_NODE
El node és un DocumentFragment.
NOTATION_NODE
El node és un Notation.

Els valors de nodeName, nodeValue, i attributes varien d'acord amb el tipus de node tal com segueix:

  nodeName nodeValue attributes
Element tagName null NamedNodeMap
Attr nom de l'atribut valor de l'atribut null
Text #text contingut del node text null
CDATASection #cdata-section contingut de la Secció CDATA null
EntityReference nom de l'entitat referenciada null null
Entity nom de l'entitat null null
ProcessingInstruction target contingut sencer excloent el target null
Comment #comment contingut del comentari null
Document #document null null
DocumentType nom del tipus del document null null
DocumentFragment #document-fragment null null
Notation nom de la notació null null
Atributs
nodeName
El nom del node depèn del seu tipus; veieu la taula de més amunt.
nodeValue
El valor d'un node depèn del seu tipus; veieu la taula de més amunt. La inicialització d'aquest atribut causa una DOMException NO_MODIFICATION_ALLOWED_ERR quan el node és de només lectura. La recuperació d'aquest atribut causa una DOMException DOMSTRING_SIZE_ERR quan es retornen més caràcters dels que caben en una variable DOMString en la plataforma d'implementació.
nodeType
Un codi que representa el tipus de l'objecte subjacent, tal com està definit més amunt.
parentNode
El pare d'aquest node. Tots els nodes, excepte Document, DocumentFragment i Attr poden tenir un pare. No obstant, si un node només ha estat creat i encara no ha estat afegit en l'arbre del document, o si ha estat substret de l'arbre, aquest atribut és null.
childNodes
Un objecte NodeList que numera tots els fills d'aquest node. Si no hi ha fills, això és un NodeList que no conté cap node. El contingut del NodeList retornat és "viu" en el sentit que, per exemple, els canvis en els fills de l'objecte node del que va ser creat es refecteixen immediatament en els nodes retornats pels accessors del NodeList; no és una instantània del contingut del Node. Això és cert per a cada NodeList, incloent-hi els que són retornats pel mètode getElementsByTagName.
firstChild
El primer fill d'un node. Si no hi ha tal node, retorna null.
lastChild
L'últim fill d'un node. Si no hi ha tal node, retorna null.
previousSibling
El node que precedeix immediatament el node actual. Si no hi ha tal node, retorna null.
nextSibling
El node que segueix immediatament el node actual. Si no hi ha tal node, retorna null.
attributes
Facilita accés al NamedNodeMap que conté els atributs del node (si és un Element) o null al contrari.
ownerDocument
Facilita accés a l'objecte Document associat amb aquest Node. Aquest és també l'objecte Document utilitzat per a crear nous Nodes. Quan el Node és un Document, aquest atribut és null.
Mètodes
insertBefore
Insereix un node fill newChild abans del node fill existent refChild. Si refChild és null, insereix newChild al final de la llista de fills.
Si newChild és un objecte DocumentFragment, tots els seus fills són inserits, en el mateix ordre, abans de refChild. Si el newChild ja es troba en l'arbre, primer se substrau.

Paràmetres
newChild
El node que s'ha d'inserir.
refChild
El node de referència, és a dir, el node abans del qual s'ha d'inserir el nou node.

Valors de Retorn
El node que s'està inserint.

Excepcions
DOMException
HIERARCHY_REQUEST_ERR: Sorgeix si aquest node és d'un tipus que no permet fills del tipus del node newChild.
WRONG_DOCUMENT_ERR: Sorgeix si el newChild va ser creat des d'un document diferent del que va crear aquest node.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
NOT_FOUND_ERR: Sorgeix si el refChild no és un fill d'aquest node.
replaceChild
Reemplaça el node fill oldChild pel newChild en el conjunt de fills del node donat, i retorna el node oldChild. Si el newChild ja és a l'arbre, primer se substrau.

Paràmetres
newChild
El nou node que s'ha de posar en la llista de fills.
oldChild
El node que ha de ser reemplaçat en la llista.

Valors de Retorn
El node reemplaçat.

Excepcions
DOMException
HIERARCHY_REQUEST_ERR: Sorgeix si aquest node és d'un tipus que no permet fills del tipus del node newChild.
WRONG_DOCUMENT_ERR: Sorgeix si newChild va ser creat des d'un document diferent del que va crear aquest node.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
NOT_FOUND_ERR: Sorgeix si oldChild no és un fill d'aquest node.
removeChild
Substrau el node fill indicat per oldChild de la llista de fills i el retorna.

Paràmetres
oldChild
El node que s'està substraient.

Valors de Retorn
El node substret.

Excepcions
DOMException
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
NOT_FOUND_ERR: Sorgeix si oldChild no és un fill d'aquest node.
appendChild
Afegeix un node fill al final de la llista de fills d'aquest node. Si el newChild ja és a l'arbre, primer se substrau.

Paràmetres
newChild
El node que s'ha inserir. Si és un objecte DocumentFragment, el contingut sencer del fragment de document es mou a la llista de fills d'aquest node.

Valors de Retorn
El node inserit.

Excepcions
DOMException
HIERARCHY_REQUEST_ERR: Sorgeix si aquest node és d'un tipus que no permet fills del tipus del node newChild.
WRONG_DOCUMENT_ERR: Sorgeix si newChild va ser creat des d'un document diferent del que va crear aquest node.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
hasChildNodes
És un mètode de conveniència per a permetre determinar d'una manera més senzilla si un Node té fills o no.

Valors de Retorn
true si el node té algun fil, false si el node no té cap fill.

Aquest mètode no té cap paràmetre.
Aquest mètode no causa cap excepció.
cloneNode
Retorna un duplicat del node, és a dir, actua com un constructor genèric de còpia per a nodes. El node duplicat no té pare (parentNode retorna null.).
La clonació d'un Element copia tots els atributs i els seus valors, incloent-hi aquells generats pel processador XML per a representar atributs per defecte, però aquest mètode no copia cap text que hi estigui contingut, a no ser que sigui un clon profund, ja que el text es troba contingut dins un node fill de tipus Text. Clonar qualsevol altre tipus de node simplement retorna una còpia d'aquest node.

Paràmetres
deep
Si és true, es clona recursivament el subarbre de sota del node especificat; si és false, es clona només el node en sí (i els seus atributs, si és un Element).

Valors de Retorn
El node duplicat.

Aquest mètode no causa cap excepció.
Interfície NodeList
La interfície NodeList facilita l'abstracció d'una col·lecció ordenada de nodes, sense definir o restringir com s'implementa aquesta col·lecció.

Els ítems d'un NodeList són accessibles via un índex unitari (integral), començant per 0.
Definició IDL
interface NodeList {
   Node      item(in unsigned long index);
   readonly attribute  unsigned long      length;
};
Mètodes
item
Retorna l'ítem número index de la col·lecció. Si index és més gran o igual que el nombre de nodes de la llista, es retorna null.

Paràmetres
index
Índex dins la col·lecció.

Valors de Retorn
El node que es troba en la posició index dins del NodeList, o null si aquest és un índex invàlid.

Aquest mètode no causa cap excepció.
Atributs
length
El nombre de nodes dins la instància NodeList. El rang d'índexs de nodes fill vàlids és de 0 a length-1 ambdós inclosos.
Interfície NamedNodeMap
Els objectes que implementen la interfície NamedNodeMap s'utilitzen per a representar col·leccions de nodes que poden ser accedits pel seu nom. Cal notar que NameNodeMap no hereta de NodeList; els NameNodeMap no es mantenen en cap ordre determinat. Els objectes continguts en un objecte que implementi un NamedNodeMap poden també ser accedits mitjançant un índex ordinal, però això és simplement per a permetre la numeració convenient dels continguts d'un NamedNodeMap, i no implica que el DOM especifiqui un ordre per a aquests Nodes. Les implementacions del DOM haurien de preservar, quan sigui possible, la demanda d'objectes en un NamedNodeMap en cas que l'autor del document font hagi assignat algun significat a aquesta demanda que no estigui definit en les especificacions del DOM, l'XML o l'HTML.
Definició IDL
interface NamedNodeMap {
   Node      getNamedItem(in DOMString name);
   Node      setNamedItem(in Node arg)
                          raises(DOMException);
   Node      removeNamedItem(in DOMString name)
                             raises(DOMException);
   Node      item(in unsigned long index);
   readonly attribute  unsigned long      length;
};
Mètodes
getNamedItem
Recupera un node d'una llista pel seu nom.

Paràmetres
name
El nom d'un node que s'ha de recuperar.

Valors de Retorn
Un Node (de qualsevol tipus) amb el nom especificat, o null si el nom especificat no identifica cap node de la llista.

Aquest mètode no causa cap excepció.

setNamedItem
Afegeix un node a un NamedNodeMap utilitzant l'atribut nodeName del node.
Així com l'atribut nodeName s'utilitza per a derivar el nom sota el qual el node ha de ser emmagatzemat, múltiples nodes de certs tipus (aquells que tenen un valor de cadena "especial") no poden ser emmagatzemats ja que els noms col·lisionarien. Això és preferible a permetre que els nodes s'aliïn.

Paràmetres
arg
Un node que ha de ser emmagatzemat en una llista de nodes designada. El node serà accessible més tard utilitzant el valor de l'atribut nodeName del node. Si un node amb aquest nom ja es troba present en la llista, es reemplaça pel nou.

Valors de Retorn
Si el nou Node reemplaça un node existent amb el mateix nom es retorna el Node existent prèviament, d'altra manera es retorna null.

Excepcions
DOMException
WRONG_DOCUMENT_ERR: Sorgeix si arg va ser creat des d'un document diferent del que va crear el NamedNodeMap.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest NamedNodeMap és de només lectura.
INUSE_ATTRIBUTE_ERR: Sorgeix si arg és un Attr que ja és un atribut d'un altre objecte Element. L'usuari del DOM ha de clonar explícitament els nodes Attr per a reutilitzar-los en altres elements.
removeNamedItem
Substrau un node identificat pel seu nom. Quan aquest NamedNodeMap conté els atributs associats a un element, tals com els retornats per l'atribut attributes de la interfície Node, si l'atribut substret se sap que té un valor per defecte, apareix immediatament un atribut contenint el valor per defecte.

Paràmetres
name
El nom del node que ha de ser substret.

Valors de Retorn
El node substret si existeix un node amb aquest nom.

Excepcions
DOMException
NOT_FOUND_ERR: Sorgeix si a la llista no hi ha cap node amb el nom igual al valor de l'atribut name.
item
Retorna l'ítem número index de la col·lecció. Si l'índex és més gran o igual que el nombre de nodes de la llista, es retorna null.

Paràmetres
index
Índex dins la col·lecció.

Valors de Retorn
El node de la posició index del NamedNodeMap, o null si aquest no és un índex vàlid.

Aquest mètode no causa cap excepció.
Atributs
length
El nombre de nodes de la instància del NamedNodeMap. El rang d'índexs vàlids de nodes fill és de 0 a length-1 ambdós inclosos.
Interfície CharacterData
La interfície CharacterData extén el Node amb un conjunt d'atributs i mètodes per a accedir a dades de caràcters del DOM. Per claretat, aquest conjunt es defineix aquí abans que a cada objecte que utilitzi aquests atributs i mètodes. Cap objecte del DOM correspon directament a CharacterData, encara que Text i altres heretin la interfície d'ell. Tots els desplaçaments (offsets) d'aquesta interfície comencen per 0.
Definició IDL
interface CharacterData : Node {
      attribute  DOMString                data;
   readonly attribute  unsigned long      length;
   DOMString      substringData(in unsigned long offset, 
                                in unsigned long count)
                                raises(DOMException);
   void           appendData(in DOMString arg)
                             raises(DOMException);
   void           insertData(in unsigned long offset,
                             in DOMString arg)
                             raises(DOMException);
   void           deleteData(in unsigned long offset, 
                             in unsigned long count)
                             raises(DOMException);
   void           replaceData(in unsigned long offset, 
                              in unsigned long count, 
                              in DOMString arg)
                              raises(DOMException);
};
Atributs
data
Aquest atribut proporciona l'accés a les dades de caràcter d'un node que implementi aquesta interfície. La implementació del DOM no pot posar límits arbitraris a la quantitat de dades que es puguin emmagatzemar en un node CharacterData. No obstant, els límits de la implementació poden significar que la totalitat de les dades d'un node no poden cabre en una sola DOMString. Els intents de recuperar dades que no caben en una sola DOMString causen una DOMException DOMSTRING_SIZE_ERR. En aquests casos, l'usuari pot fer una crida a substringData per a recuperar les dades en troços de mides apropiades. A més, la inicialització d'aquest atribut causa una DOMException NO_MODIFICATION_ALLOWED_ERR quan el node és de només lectura.
length
Aquest atribut proporciona accés al nombre de caràcters que estan disponibles a través de data i del mètode substringData de més avall. Aquest pot tenir valor zero, és a dir, els nodes CharacterData poden ser buits.
Mètodes
substringData
Extreu un rang de dades d'un objecte que implementi aquesta interfície.

Paràmetres
offset
Distància (offset) des del principi de la subcadena que s'ha d'extreure.
count
El nombre de caràcters que s'han d'extreure.

Valors de Retorn
Aquest mètode retorna la subcadena especificada. Si la suma d'offset i count excedeix de length, aleshores es retornen tots els caràcters fins al final de les dades.

Excepcions
DOMException
INDEX_SIZE_ERR: Sorgeix si la distància especificada és negativa o més gran que el nombre de caràcters de data, i si count és negatiu.
DOMSTRING_SIZE_ERR: Sorgeix si el rang de text especificat no hi cap en una DOMString.
appendData
Afegeix la cadena al final de les dades de caràcter en l'objecte que implementa aquesta interfície. Si té èxit, data facilitarà accés a la concatenació de data i la DOMString especificat.

Paràmetres
arg
La DOMString que s'ha d'inserir.

Excepcions
DOMException
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
insertData
Insereix una cadena en el desplaçament (distància, offset) de caràcter especificat.

Paràmetres
offset
El desplaçament del caràcter al qual s'ha d'inserir.
arg
La DOMString que s'ha d'inserir.

Excepcions
DOMException
INDEX_SIZE_ERR: Sorgeix si el desplaçament especificat és negatiu o més gran que el nombre de caràcters de data.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
deleteData
Substrau un rang de caràcters del node. Si té èxit, data i length reflecteixen aquest canvi.

Paràmetres
offset
El desplaçament des del qual s'han de substraure els caràcters.
count
El nombre de caràcters que s'han d'esborrar. Si la suma d'offset i count excedeix length aleshores tots els caràcters des d'offset fins al final de les dades s'esborren.

Excepcions
DOMException
INDEX_SIZE_ERR: Sorgeix si el desplaçament especificat és negatiu o més gran que el nombre de caràcters de data, i si el count especificat és negatiu.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
replaceData
Reemplaça els caràcters començant pel desplaçament de caràcter especificat amb la cadena especificada.

Paràmetres
offset
El desplaçament des del qual s'inicia la substitució.
count
El nombre de caràcters que s'han de reemplaçar. Si la suma d'offset i count excedeix de length, aleshores tots els caràcters fins al final de les dades són reemplaçats (és a dir, l'efecte és el mateix que la crida a un mètode remove amb el mateix rang, seguit de la invocació d'un mètode append).
arg
La DOMString amb la qual el rang ha de ser reemplaçat.

Excepcions
DOMException
INDEX_SIZE_ERR: Sorgeix si el desplaçament especificat és negatiu o és més gran que el nombre de caràcters de data, i si el count especificat és negatiu.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
Interfície Attr
La interfície Attr representa un atribut en un objecte Element. Típicament, els valors admisibles per a l'atribut estan definits en una definició del tipus de document.

Els objectes Attr hereten la interfície Node, però com que no són realment nodes fills de l'element que descriuen, el DOM no els considera part de l'arbre del document. Així, els atributs de Node parentNode, previousSibling i nextSibling tenen un valor null per als objectes Attr. El DOM considera el punt de vista que els atributs són característiques d'elements abans que tenir una identificació separada dels elements amb els quals estan associats; això hauria de fer-los més eficients per a implementar característiques tals com atributs per defecte, associats amb tots els elements d'un tipus donat. A més, els nodes Attr no poden ser fills immediats d'un DocumentFragment. No obstant, poden estar associats amb nodes d'elements continguts dins d'un DocumentFragment. En resum, els usuaris i implementadors del DOM necessiten saber que els nodes Attr tenen algunes coses en comú amb altres objectes que hereten la interfície Node, però que també són força diferents.

El valor efectiu dels atributs es determina tal com segueix: si a aquest atribut li ha estat assignat un valor explícitament, aquest valor és el valor efectiu de l'atribut; en cas contrari, si hi ha una declaració per a aquest atribut, i aquesta declaració inclou un valor per defecte, aleshores aquest valor per defecte és el valor efectiu de l'atribut; en cas contrari, l'atribut no existeix en aquest element del model d'estructura fins que no estigui afegit explícitament. Cal observar que l'atribut nodeValue de la instància d'Attr pot també ser usat per a recuperar en una cadena la versió en forma de cadena del valor (o valors) de l'atribut.

En XML, on el valor d'un atribut pot contenir referències a entitats, els nodes fill del node Attr proporcionen una representació en la qual les referències a entitats no són expandides. Aquests nodes fill poden ser nodes Text o bé nodes EntityReference. Com que el tipus de l'atribut és possible que sigui desconegut, no hi ha valors d'atributs tokenitzats.
Definició IDL
interface Attr : Node {
   readonly attribute  DOMString      name;
   readonly attribute  boolean        specified;
      attribute  DOMString            value;
};
Atributs
name
Retorna el nom d'aquest atribut.
specified
Si a aquest atribut se li va donar explícitament un valor en el document original, retorna true; al contrari, retorna false. Cal notar que la implementació va a càrrec d'aquest atribut, i no de l'usuari. Si l'usuari canvia el valor de l'atribut (fins i tot si acaba tenint el mateix valor que el valor per defecte) aleshores el flag specified es converteix automàticament a true. Per a reespecificar l'atribut com el valor per defecte a partir de la DTD, l'usuari ha d'esborrar l'atribut, i després la implementació obtindrà un nou atribut disponible amb specified == false i el valor per defecte (si n'existeix un). En resum:

Si l'atribut té un valor assignat en el document i specified és true, el valor és el valor assignat.
Si l'atribut no té assignat cap valor en el document i té un valor per defecte que té en la DTD, aleshores specified és false, i el valor és el valor per defecte en la DTD.
Si l'atribut no té cap valor assignat en el document i té un valor declarat com #IMPLIED en la DTD, aleshores l'atribut no apareix en el model d'estructura del document.
value
Quan s'utilitza per a obtenir el valor d'un atribut, retorna el valor de l'atribut com una cadena. Les referències a caràcters i a entitats generals es reemplacen amb els seus valors. Quan s'utilitza per a inicialitzar el valor d'un atribut crea un node Text amb els continguts de la cadena sense analitzar gramaticalment. El fet d'inicialitzar l'atribut value causa una DOMException NO_MODIFICATION_ALLOWED_ERR quan el node és de només lectura.
Interfície Element
La immensa majoria (apart del text) dels objectes que els autors troben quan recorren un document són nodes Element. Considerem el següent document XML:
<elementExample id="demo">
  <subelement1/>
  <subelement2><subsubelement/></subelement2>
</elementExample>

Quan es representa utilitzant el DOM, el node del capdamunt és un "elementExample", el qual conté dos nodes fill Element, un per al "subelement1" i un per al "subelement2". El "subelement1" no conté cap node fill.

Els Elements poden tenir atributs associats a ells; com que la interfície Element hereta de Node, l'atribut attributes de la interfície genèrica Node pot ser utilitzat per recuperar el conjunt de tots els atributs d'un element. Hi ha mètodes en la interfície Element per a recuperar tant un objecte Attr pel nom com directament un valor d'Attr pel nom. En XML, on un valor d'atribut pot contenir referències a entitats, un objecte Attr hauria de ser recuperat per examinar el subarbre (possiblement bastant complicat) que representa el valor de l'atribut. Per altra banda, en HTML, on tots els atributs tenen per valors simples cadenes, els mètodes per a accedir directament al valor d'un atribut poden ser usats convenientment de manera segura.
Definició IDL
interface Element : Node {
   readonly attribute  DOMString      tagName;
   DOMString      getAttribute(in DOMString name);
   void           setAttribute(in DOMString name, 
                               in DOMString value)
                               raises(DOMException);
   void           removeAttribute(in DOMString name)
                                  raises(DOMException);
   Attr           getAttributeNode(in DOMString name);
   Attr           setAttributeNode(in Attr newAttr)
                                   raises(DOMException);
   Attr           removeAttributeNode(in Attr oldAttr)
                                      raises(DOMException);
   NodeList       getElementsByTagName(in DOMString name);
   void           normalize();
};
Atributs
tagName
Aquest atribut conté la cadena que és el nom de l'element. Per exemple, en:
<elementExample id="demo">
   ... 
</elementExample>
el tagName té el valor "elementExample". Cal observar que el DOM de l'HTML retorna el tagName d'un element HTML en la forma canònica en majúscules, sense tenir en compte el tipus de lletra (case) en el document HTML origen.
Mètodes
getAttribute
Retorna un valor Attr pel nom.

Paràmetres
name
El nom de l'atribut que ha de ser retornat.

Valors de Retorn
El valor d'Attr és una cadena, o la cadena buida si aquest atribut no té un valor per defecte especificat.

Aquest mètode no causa cap excepció.
setAttribute
Afegeix un nou atribut. Si un atribut amb aquest nom ja es troba present en l'element, el seu valor es substitueix amb el valor del paràmetre. Aquest valor és una simple cadena, no és analitzat gramaticalment mentre s'està inicialitzant. Per tant qualsevol marca (tal com sintaxi que ha de ser reconeguda com una referència d'entitat) és tractada com a text literal, i necessita ser "escapada" (scaped) apropiadament per la implementació quan està sent copiada (escrita). Per tal d'assignar un valor d'atribut que contingui referències d'entitats, l'usuari ha de crear un node Attr més alguns nodes Text i EntityReference, construir el subarbre apropiat i utilitzar setAttributeNode per a assignar-lo com el valor d'un atribut.

Paràmetres
name
Nom d'un atribut.
value
Valor, en forma de cadena, per a la inicialització.

Excepcions
DOMException
INVALID_NAME_ERR: Sorgeix si s'especifica un nom invàlid.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
removeAttribute
Substrau l'Attr amb el nom especificat. Si l'atribut substret se sap que té un valor per defecte, apareix immediatament un atribut contenint el valor per defecte.

Paràmetres
name
El nom de l'atribut que ha de ser substret.

Excepcions
DOMException
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.


Aquest mètode no retorna res.
getAttributeNode
Retorna un node Attr pel nom.

Paràmetres
name
El nom de l'atribut que ha de ser retornat.

Valors de Retorn
El node Attr amb el nom d'atribut especificat o null si no hi ha tal atribut.

Aquest mètode no causa cap excepció.
setAttributeNode
Afegeix un nou atribut. Si un atribut amb aquest nom ja hi és present en l'element, es reemplaça pel nou.

Paràmetres
newAttr
El node Attr que ha de ser afegit en la llista d'atributs.

Valors de Retorn
Si l'atribut newAttr reemplaça un atribut ja existent amb el mateix nom el node Attr prèviament existent és retornat, del contrari es retorna null.

Excepcions
DOMException
WRONG_DOCUMENT_ERR: Sorgeix si el newAttr va ser creat des d'un document diferent del que va crear l'element.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
INUSE_ATTRIBUTE_ERR: Sorgeix si el newAttr ja és un atribut d'un altre objecte Element. L'usuari del DOM ha de clonar explícitament els nodes Attr per a reutilitzar-los en altres elements.
removeAttributeNode
Substrau l'atribut especificat.

Paràmetres
oldAttr
El node Attr que ha de ser substret de la llista d'atributs. Si l'Attr substret té un valor per defecte, aquest és reemplaçat immediatament.

Valors de Retorn
Retorna el node Attr que ha estat substret.

Excepcions
DOMException
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
NOT_FOUND_ERR: Sorgeix si l'oldAttr no és un atribut de l'element.
getElementsByTagName
Retorna un NodeList de tots els elements descendents amb un tagName donat en l'ordre en què serien trobats en un recorregut en preordre de l'arbre de l'Element.

Paràmetres
name
El nom del tag amb el que s'ha d'unificar. Si es dóna la cadena "*", el mètode retorna tots els elements descendents de l'element de sortida.

Valors de Retorn
Aquest mètode retorna una llista de nodes element que tenen el tagName especificat.

Aquest mètode no causa cap excepció.
normalize
Posa tots els nodes Text al capdavall del subarbre de sota d'aquest Element en una forma "normal" on només les marques (per ex., tags, comentaris, instruccions de processament, seccions CDATA, i referències d'entitats) separen els nodes Text, és a dir, no hi ha nodes Text adjacents. Això pot ser utilitzat per a assegurar que la vista del DOM d'un document és idèntica a com es veuria si se salvés i es recarregués, i és molt útil quan s'han d'utilitzar operacions (tals com cerques Xpointer) que depenen d'una estructura d'arbre de document particular.

Aquest mètode no té paràmetres.
Aquest mètode no retorna res.
Aquest mètode no causa cap excepció.
Interfície Text
La interfície Text representa el contingut contextual (anomenat dades de caràcter en XML) d'un Element o un Attr. Si no hi ha cap marca dins del contingut d'un element, el text és contingut en un sol objecte que implementa la interfície Text que és el fill de l'element. Totes les marques són analitzades gramaticalment en elements fill que són germans dels nodes de text en qualsevol dels seus costats, i el contingut dels quals és representat com a fills dels nodes de text de l'element del tag.

Quan un document es troba per primer cop disponible pel DOM, només hi ha un node Text per a cada bloc de text. Els usuaris poden crear nodes Text adjacents que representin els continguts d'un element donat sense que hi hagi d'intervenir cap marca, però haurien d'estar al corrent que no hi ha cap manera de representar les separacions entre aquests nodes en XML o HTML, per tant (en general) no persistiran entre sessions d'edició del DOM. El mètode normalize() en nodes Element combina tots aquests objectes Text adjacents en un sol node per a cada bloc de text; això es recomana abans d'emplear operacions que depenen d'una estructura de document determindada, tal com la navegació amb els XPointers.
Definició IDL
interface Text : CharacterData {
   Text      splitText(in unsigned long offset)
                       raises(DOMException);
};
Mètodes
splitText
Trenca un node de text en dos nodes de text al desplaçament (offset) especificat, deixant-los tots dos en l'arbre com a germans.

Paràmetres
offset
El desplaçament on s'ha de fer la divisió, començant per 0.

Valors de Retorn
Aquest mètode retorna el nou node de text que conté tot el contingut en el punt de desplaçament i després del punt de desplaçament. El node original conté tot el contingut fins al límit del punt de desplaçament.

Excepcions
DOMException
INDEX_SIZE_ERR: Sorgeix si el desplaçament especificat és negaitu o més gran que el nombre de caràcters de les dades.
NO_MODIFICATION_ALLOWED_ERR: Sorgeix si aquest node és de només lectura.
Interfície Comment
Representa el contingut d'un comentari, és a dir, tots els caràcters entre la marca de començament '<!--' i la marca de final '-->'. Cal notar que aquesta és la definició d'un comentari en XML, i, a la pràctica, en HTML, encara que algunes eines HTML poden implementar l'estructura sencera de comentaris SGML.
Definició IDL
interface Comment : CharacterData {
};
1.3. Interfícies Exteses
Les interfícies definides aquí formen part del Nivell 1 de l'especificació del Nucli del DOM, però els objectes que exposen aquestes interfícies mai es trobaran en una implementació del DOM que tracti només amb HTML. Com a tals, les implementacions del DOM només per a HTML no necessiten tenir objectes que implementin aquestes interfícies.

Les 5 interfícies exteses són:

Interfície CDATASection
Les seccions CDATA s'utilitzen per a "escapar" blocs de text que contenen caràcters que d'altra manera es tractarien com a codi de marques. L'únic delimitador que és reconegut en una secció CDATA és la cadena "]]>" que finalitza la secció CDATA. Les seccions CDATA no poden aniuar-se. El seu propòsit principal és incloure material tal com fragments d'XML, sense necessitar haver d'"escapar" tots els delimitadors.

L'atribut DOMString del node Text suporta el text que es troba contingut en una secció CDATA. Cal observar que aquest pot contenir caràcters que necessitin ser "escapats" fora de les seccions CDATA i que, depenent de la codificació de caràcters ("charset") triada per a la serialització, pot ser impossible escriure alguns caràcters com a part d'una secció CDATA.

La interfície CDATASection hereta la interfície CharacterData a través de la interfície Text. Els nodes CDATASection adjacents no es barrejen per a l'ús del mètode Element.normalize().
Definició IDL
interface CDATASection : Text {
};
Interfície DocumentType
Cada Document té un atribut doctype el valor del qual pot ser null o bé un objecte DocumentType. La interfície DocumentType en el Nucli del Nivell 1 del DOM proporciona una interfície per a llistar les entitats que estan definides per al document, i poca cosa més perquè l'efecte dels espais de noms i dels esforços dels diversos esquemes XML sobre la representació no estan encara clarament entesos en el moment d'escriure l'especificació del DOM, Nivell 1.

El Nivell 1 del DOM no suporta l'edició de nodes DocumentType.
Definició IDL
interface DocumentType : Node {
   readonly attribute  DOMString         name;
   readonly attribute  NamedNodeMap      entities;
   readonly attribute  NamedNodeMap      notations;
};
Atributs
name
El nom de la DTD, és a dir, el nom que segueix immediatament la paraula clau DOCTYPE
entities
Un NamedNodeMap que conté les entitats generals, tant externes com internes, declarades en la DTD. Els duplicats estan descartats. Per exemple, en:
<!DOCTYPE ex SYSTEM "ex.dtd" [
   <!ENTITY entitat1 "entitat1">
   <!ENTITY entitat2 "entitat2">
   <!ENTITY % entitat3 "entitat3">
]>
<ex/>
la interfície proporciona accés a entitat1 i a entitat2 però no a entitat3. Cada node d'aquest mapa també implementa la interfície Entity.

El Nivell 1 del DOM no suporta l'edició de les entitats, per tant les entitats no poden ser alterades de cap manera.
notations
Un NamedNodeMap que conté les notacions declarades en la DTD. Els duplicats estan descartats. Cada node en aquest mapa també implementa la interfície Notation.

El Nivell 1 del DOM no suporta l'edició de les notacions, per tant les notacions no poden ser alterades de cap manera.
Interfície Notation
Aquesta interfície representa una notació declarada en la DTD. Una notació tant pot declarar, pel nom, el format d'una entitat no analitzada gramaticalment (veieu la secció 4.7 de l'especificació de l'XML), com pot ser utilitzada per a la declaració formal dels objectius de les Instruccions de Processament (veieu la secció 2.6 de l'especificació de l'XML 1.0). L'atribut nodeName heratat de Node està inicialitzat al nom declarat de la notació.

El Nivell 1 del DOM no suporta l'edició dels nodes Notation; per tant aquests nodes són de només lectura.

Un node Notation no té cap pare.
Definició IDL
interface Notation : Node {
   readonly attribute  DOMString      publicId;
   readonly attribute  DOMString      systemId;
};
Atributs
publicId
L'identificador públic d'aquesta notació. Si l'identificafor públic no està especificat, aquest atribut és null.
systemId
L'identificafor de sistema d'aquesta notació. Si l'identificador de sistema no està especificat, aquest atribut és null.
Interfície Entity
Aquesta interfície representa una entitat, tant si és analitzada gramaticalment com si no, d'un document XML. Cal observar que això modela l'entitat en sí mateixa, i no la declaració de l'entitat. La modelació de la declaració de l'entitat s'ha deixat per a un proper nivell de l'especificació del DOM.

L'atribut nodeName, que és heretat de Node, conté el nom de l'entitat.

Un processador XML pot escollir expandir completament les entitats abans que el model d'estructura sigui passat al DOM; en aquest cas no hi haurà cap node EntityReference en l'arbre del document.

L'XML no obliga que un processador no validador d'XML llegeixi i processi les declaracions d'entitats fetes en el subconjunt extern o declarades en entitats de paràmetres externs. Això significa que les entitats analitzades gramaticalment declarades en el subconjunt extern no necessiten ser expandides per algunes classes d'aplicacions, i que el valor de reemplaçament de l'entitat pot no trobar-se disponible. Quan el valor de reemplaçament es trobi disponible, la corresponent llista de nodes Entity representarà l'estructura del text de reemplaçament. D'altra manera, la llista de fills és buida.

La resolució dels fills de l'Entity (el valor de reemplaçament) pot ser avaluada lentament; les accions per part de l'usuari (tals com cridar el mètode childNodes sobre el node Entity) se suposa que es duran a terme durant l'avaluació.

El Nivell 1 del DOM no suporta l'edició dels nodes Entity; si un usuari vol fer canvis en els continguts d'un Entity, cada node EntityReference relacionat ha de ser reemplaçat en el model d'estructura per un clon dels continguts de l'Entity, i aleshores els canvis desitjats poden fer-se aleshores a cada un dels clons. Tots els descendents un node Entity són de només lectura.

Un node Entity no té cap pare.
Definició IDL
interface Entity : Node {
   readonly attribute  DOMString      publicId;
   readonly attribute  DOMString      systemId;
   readonly attribute  DOMString      notationName;
};
Atributs
publicId
L'identificafor públic associat a l'entitat, si és que n'hi ha algun d'especificat. Si l'identificador públic no està especificat, aquest atribut és null.
systemId
L'identificafor de sistema associat a l'entitat, si és que n'hi ha algun d'especificat. Si l'identificador de sistema no està especificat, aquest atribut és null.
notationName
Per a les entitats no analitzades gramaticalment, aquest atribut és el nom de la notació per a l'entitat. Per a les entitats analitzades gramaticalment, és null.
Interfície EntityReference
Els objectes EntityReference poden ser inserits dins del model d'estructura quan una referència a una entitat es trobi en el document font, o bé quan l'usuari desitgi inserir una referència a una entitat. Cal observar que les referències a caràcters i les referències a entitats predefinides es considera que s'expandeixen per mitjà del processador HTML o XML, per tant els caràcters estan representats pel seu Unicode equivalent abans que per una referència a l'entitat. A més, el processador XML pot expandir completament les referències a entitats mentre construeix el model d'estructura, enlloc de proporcionar objectes EntityReference. Si proporciona aquests objectes, aleshores per a un node EntityReference donat, pot ser que no hi hagi cap node Entity que representi l'entitat referenciada, però aquest Entity existeix, aleshores la llista de fills del node EntityReference és la mateixa que per al node Entity. Tal com per al node Entity, tots els descendents d'EntityReference són de només lectura.

La resolució dels fills de l'EntityReference (el valor de reemplaçament de l'Entity referenciat) pot ser avaluada lentament; les accions per part de l'usuari (tals com cridar el mètode childNodes sobre el node EntityReference) es suposa que es duen a terme durant l'avaluació.
Definició IDL
interface EntityReference : Node {
};
Interfície ProcessingInstruction
La interfície ProcessingInstruction representa una "instrucció de processament", utilitzada en XML (i legal, encara que rarament suportat, en HTML) com una manera de guardar informació específica del processador en el text del document. El contingut del node és el contingut sencer que es troba entre els delimitadors de la instrucció de processament.
Definició IDL
interface ProcessingInstruction : Node {
   readonly attribute  DOMString      target;
      attribute  DOMString            data;
};
Atributs
target
L'XML defineix un objectiu (target) com el primer token que segueix els tags que comencen la instrucció de processament. El valor d'aquest atribut és aquell nom. Per a l'HTML, el valor és null.
data
El contingut de la instrucció de processament. En HTML aquesta va des del caràcter immediatament posterior a <? fins al caràcter immediatament anterior a >. En XML va del primer caràcter diferent d'espai en blanc després de l'objectiu (target) al caràcter que precedeix immediatament el ?>. En inicialitzar aquest atribut sorgeix una DOMException NO_MODIFICATION_ALLOWED_ERR quan el node és de només lectura.
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