Introducción a AJAX

4.2. Tipos de nodos

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:

Representación en forma de árbol del archivo XML de ejemplo

Figura 4.2 Representación en forma de árbol del archivo XML de ejemplo

El nodo raíz siempre es el nodo de tipo 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.

Nodos generados por una etiqueta HTML

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.