Los documentos XML y HTML tratados por DOM se convierten en una jerarquía de nodos. Los nodos que representan los documentos pueden ser de diferentes tipos. A continuación se detallan los tipos más importantes:
Document
: es el nodo raíz de todos los documentos HTML y XML. Todos los demás nodos derivan de él.DocumentType
: es el nodo que contiene la representación del DTD empleado en la página (indicado mediante el DOCTYPE
).Element
: representa el contenido definido por un par de etiquetas de apertura y cierre (<etiqueta>...</etiqueta>
) o de una etiqueta abreviada que se abre y se cierra a la vez (<etiqueta/>
). Es el único nodo que puede tener tanto nodos hijos como atributos.Attr
: representa el par nombre-de-atributo/valor.Text
: almacena el contenido del texto que se encuentra entre una etiqueta de apertura y una de cierre. También almacena el contenido de una sección de tipo CDATA.CDataSection
: es el nodo que representa una sección de tipo <![CDATA[ ]]>
.Comment
: representa un comentario de XML. Se han definido otros tipos de nodos pero que no son empleados habitualmente: DocumentFragment
, Entity
, EntityReference
, ProcessingInstruction
y Notation
.
El siguiente ejemplo de documento sencillo de XML muestra algunos de los nodos más habituales:
<?xml version="1.0"?> <clientes> <!-- El primer cliente --> <cliente> <nombre>Empresa SA</nombre> <sector>Tecnologia</sector> <notas><![CDATA[ Llamar la proxima semana ]]></notas> </cliente> </clientes>
Su representación como árbol de nodos DOM es la siguiente:
Figura 4.2. Representación en forma de árbol del archivo XML de ejemplo
Document
, del que derivan todos los demás nodos del documento. Este nodo es común para todas las páginas HTML y todos los documentos XML. A continuación se incluye la etiqueta <clientes>...</clientes>
. Como se trata de una etiqueta, DOM la transforma en un nodo de tipo Element
. Además, como la etiqueta encierra a todos los demás elementos de la página, el nodo Clientes
de tipo Element
deriva directamente de Document
y todos los demás nodos del documento derivan de ese nodo.
El comentario es el primer texto que se incluye dentro de la etiqueta <clientes>
, por lo que se transforma en el primer subnodo del nodo clientes
. Al ser un comentario de XML, se trata de un nodo de tipo Comment
.
Al mismo nivel que el comentario, se encuentra la etiqueta <cliente>
que define las características del primer cliente y forma el segundo subnodo del nodo clientes
. Todas las demás etiquetas del documento XML se encuentran encerradas por la etiqueta <cliente>...</cliente>
, por lo que todos los nodos restantes derivarán del nodo cliente
.
Cada etiqueta simple de tipo <etiqueta>texto</etiqueta>
se transforma en un par de nodos: el primero de tipo Element
(que contiene la etiqueta en sí) y el segundo, un nodo hijo de tipo Text
que contiene el contenido definido entre la etiqueta de apertura y la de cierre.
Figura 4.3. Nodos generados por una etiqueta HTML
La etiqueta <notas>
se transforma en tres nodos, ya que contiene una sección de tipo CData
, que a su vez se transforma en un nodo del que deriva el contenido propio de la sección CData
.
Un buen método para comprobar la transformación que sufren las páginas web y visualizar la jerarquía de nodos creada por DOM es utilizar la utilidad "Inspector DOM" (o "DOM Inspector") del navegador Mozilla Firefox.
La utilidad se puede encontrar en el menú Herramientas y además de mostrar visualmente la jerarquía de nodos, permite acceder fácilmente a toda la información de cada nodo y muestra en la página web el contenido al que hace referencia el nodo actual.