Juan Manuel 19 de febrero de 2008 a las 11.24
   Imprimir artículo
elWebmaster.com

¿Qué es el DOM (Modelo de Objetos del Documento)?


El Modelo de Objetos del Documento (DOM) es una interfaz de programación de aplicaciones (API) para documentos HTML y XML. Define la estructura lógica de los documentos y el modo en que se accede y manipula un documento.

Seguramente los desarrolladores estarán más que familiarizados con este concepto, pero nunca viene mal recordar lo aprendido y, de paso, darlo a conocer a los usuarios que estén dando sus primeros pasos en programación.

En la especificación del DOM, el término “documento” se utiliza en un sentido amplio. XML se utiliza cada vez más como un medio para representar muchas clases diferentes de información que puede ser almacenada en sistemas diversos, y mucha de esta información se vería, en términos tradicionales, más como datos que como documentos. Sin embargo, XML presenta estos datos como documentos, y se puede usar el DOM para manipular estos datos.

Con el Modelo de Objetos del Documento los programadores pueden construir documentos, navegar por su estructura, y añadir, modificar o eliminar elementos y contenido. Se puede acceder a cualquier cosa que se encuentre en un documento HTML o XML, y se puede modificar, eliminar o añadir usando el Modelo de Objetos del Documento, salvo algunas excepciones. En particular, aún no se han especificado las interfaces DOM para los subconjuntos internos y externos de XML.

Siendo una especificación del W3C, uno de los objetivos importantes del Modelo de Objetos del Documento es proporcionar un interfaz estándar de programación que pueda utilizarse en una amplia variedad de entornos y aplicaciones. El DOM se ha diseñado para ser utilizado en cualquier lenguaje de programación.

Para proporcionar una especificación de las interfaces DOM precisa e independiente del lenguaje, hemos decidido definir las especificaciones en OMG IDL, según se define en la especificación CORBA 2.2. Además de la especificación OMG IDL, proporcionamos correspondencias con los lenguajes Java y ECMAScript (un lenguaje de scripts industrial basado en JavaScript y JScript).

Nota: OMG IDL se usa únicamente como un medio de especificar las interfaces independiente de la plataforma y del lenguaje. Se podrían haber utilizado otros IDLs. En general, los IDLs se diseñan para entornos de computación específicos. El Modelo de Objetos del Documento puede implementarse en cualquier entorno de computación, y no requiere las librerías de enlazado de objetos (object binding runtimes) generalmente asociadas con tales IDLs.

Lo que el Modelo de Objetos del Documento es

El DOM es un API de programación para documentos. Guarda una gran similitud con la estructura del documento al que modeliza. Por ejemplo, considérese esta tabla, tomada de un documento HTML:

<TABLE>

<TBODY>

<TR>

<TD>Shady Grove</TD>

<TD>Aeolian</TD>

</TR>

<TR>

<TD>Over the River, Charlie</TD>

<TD>Dorian</TD>

</TR>

</TBODY>

</TABLE>

El DOM representa esta tabla de este modo:

Representación del DOM de la tabla del ejemplo.

En el DOM, los documentos tienen una estructura lógica que es muy parecida a un árbol. Para ser más precisos, es más bien como un “bosque” o una “arboleda”, que puede contener más de un árbol. Sin embargo, el DOM no especifica que los documentos deban ser implementados como un árbol o un bosque, ni tampoco especifica cómo deben implementarse las relaciones entre objetos.

El DOM es un modelo lógico que puede implementarse de cualquier manera que sea conveniente. En esta especificación, usamos el término modelo de estructura para describir la representación en forma de árbol de un documento, evitando la utilización de términos tales como “árbol” o “bosque” para evitar la implicación de una implementación en particular.

Una propiedad importante de los modelos de estructura del DOM es su isomorfismo estructural: si dos implementaciones cualesquiera del Modelo de Objetos del Documento se usan para crear una representación del mismo documento, ambas crearán el mismo modelo de estructura, con exactamente los mismos objetos y relaciones.

Se eligió el nombre “Modelo de Objetos del Documento” porque es un “modelo de objetos” en el sentido tradicional del diseño orientado a objetos: los documentos se modelizan usando objetos, y el modelo comprende no solamente la estructura de un documento, sino también el comportamiento de un documento y de los objetos de los cuales se compone.

En otras palabras, los nodos del diagrama anterior no representan una estructura de datos, sino que representan objetos, los cuales pueden tener funciones e identidad. Como modelo de objetos, el DOM identifica:

  • Las interfaces y objetos usados para representar y manipular un documento.
  • La semántica de estas interfaces y objetos, incluyendo comportamiento y atributos.
  • Las relaciones y colaboraciones entre estas interfaces y objetos.

Tradicionalmente, la estructura de los documentos SGML se ha representado mediante un modelo de datos abstractos, no con un modelo de objetos. En un modelo de datos abstractos, el modelo se centra en los datos. En los lenguajes de programación orientados a objetos, los datos se encapsulan en objetos que ocultan los datos, protegiéndolos de su manipulación directa desde el exterior. Las funciones asociadas con estos objetos determinan cómo pueden manipularse los objetos, y son parte del modelo de objetos.

El Modelo de Objetos del Documento consiste actualmente de dos partes, el Núcleo del DOM y el DOM HTML. El Núcleo del DOM representa la funcionalidad usada para los documentos XML, y también sirve de base para el DOM HTML. Una implementación conforme del DOM debe implementar todas las interfaces fundamentales del capítulo sobre el Núcleo con la semántica definida. Además, debe implementar o bien el DOM HTML o bien las interfaces extendidas (XML), o ambas, con la semántica definida.

Lo que el Modelo de Objetos del Documento no es

Se ha incluido esta sección para dar una noción más precisa del DOM distinguiéndolo de otros sistemas que aparentemente pueden resultar similares a él.

  • Aunque el Modelo de Objetos del Documento ha recibido una gran influencia del “HTML Dinámico”, en el Nivel 1 no implementa todo el “HTML Dinámico”. En particular, aún no se han definido los eventos. El Nivel 1 se ha diseñado para establecer un fundamento sólido para esta clase de funcionalidad, por medio de un modelo del propio documento a la vez robusto y flexible.
  • El Modelo de Objetos del Documento no es una especificación binaria. Los programas DOM escritos en el mismo lenguaje serán compatibles entre plataformas a nivel de código fuente, pero el DOM no define ninguna forma de interoperabilidad binaria.
  • El Modelo de Objetos del Documento no es una manera de ofrecer objetos persistentes para XML o HTML. En lugar de especificar cómo pueden representarse objetos en XML, el DOM especifica cómo se representan los documentos XML y HTML como objetos, de modo que puedan ser utilizados por programas orientados a objetos.
  • El Modelo de Objetos del Documento no es un conjunto de estructuras de datos, es un modelo de objetos que especifica interfaces. Aunque este documento contiene diagramas que muestran relaciones padre/hijo, éstas son relaciones lógicas definidas por las interfaces de programación, no representaciones de ninguna estructura interna de datos particular.
  • El Modelo de Objetos del Documento no define “la semántica interna real” del XML o del HTML. La semántica de estos lenguajes está definida por las Recomendaciones correspondientes del W3C. El DOM es un modelo de programación diseñado para respetar estas semánticas. El DOM no tiene ninguna consecuencia en el modo en que se escriben los documentos XML y HTML; cualquier documento que pueda escribirse con estos lenguajes puede ser representado en el DOM.
  • El Modelo de Objetos del Documento, a pesar de su nombre, no es un competidor del modelo de objetos COM. COM, al igual que CORBA, es una manera independiente del lenguaje de especificar interfaces y objetos; el DOM es un conjunto de interfaces y objetos diseñado para manipular documentos HTML y XML. El DOM se puede implementar usando sistemas independientes del lenguaje como COM o CORBA; también se puede implementar usando enlaces específicos del lenguaje, como los especificados en este documento para Java y ECMAScript.

De dónde vino el Modelo de Objetos del Documento

El DOM se originó como una especificación para permitir que los programas Java y los scripts de JavaScript fueran portables entre los navegadores web. El “HTML Dinámico” fue el ascendiente inmediato del Modelo de Objetos del Documento, y originalmente se pensaba en él principalmente en términos de navegadores. Sin embargo, cuando se formó el Grupo de Trabajo DOM en el W3C, también se unieron a él compañías de otros ámbitos, incluyendo los de la edición y archivo de documentos HTML y XML. Varias de estas compañías habían trabajado con SGML antes de que se hubiera desarrollado el XML; como resultado de ello, el DOM ha recibido influencias de los “Groves” de SGML y del estándar HyTime. Algunas de estas compañías también habían desarrollado sus propios modelos de objetos para documentos a fin de proporcionar un API para los editores o los archivos de documentos SGML/XML, y estos modelos de objetos también han influido en el DOM.

Las entidades y el núcleo del DOM

En las interfaces fundamentales del DOM no hay objetos que representen entidades. Las referencias numéricas de caracteres y las referencias a entidades predefinidas en HTML y en XML son reemplazadas por el carácter individual que constituye la sustitución de la entidad. Por ejemplo, en:

<p>This is a dog & a cat</p>

el “&” será reemplazado por el carácter “&”, y el texto del elemento P formará una única secuencia continua de caracteres.

Debido a que las referencias numéricas de caracteres y las entidades predefinidas no son reconocidas como tales en las secciones CDATA, ni en los elementos SCRIPT y STYLE de HTML, no son reemplazadas por el carácter individual al que aparantemente se refieren.

Si el ejemplo anterior estuviera contenido en una sección CDATA, el “&” no sería reemplazado por “&”; y el <p> tampoco sería reconocido como una etiqueta inicial. La representación de entidades generales, tanto internas como externas, está definida dentro de las interfaces extendidas (XML) del Nivel 1 de la especificación.

Nota: Cuando la representación DOM de un documento sea serializada como texto XML o HTML, las aplicaciones necesitarán comprobar cada carácter de los datos de texto para ver si necesita ser convertido en una secuencia de escape usando una entidad numérica o predefinida. De lo contrario se podría obtener HTML o XML inválido.

Además, las implementaciones deberían ser conscientes del hecho de que la serialización en una codificación de caracteres (“charset”) que no cubra completamente la ISO 10646 puede fallar si hay caracteres en el código o en las secciones CDATA que no estén presentes en esa codificación.

Interfaces DOM e Implementaciones DOM

El DOM especifica interfaces que pueden utilizarse para manipular documentos XML o HTML. Es importante darse cuenta de que estas interfaces son una abstracción.

Comparables a las “clases de base abstractas” de C++, constituyen un medio de especificar una forma de acceder y manipular la representación interna que una aplicación hace de un documento. Las interfaces no implican una implementación concreta en particular. Cada aplicación DOM es libre de mantener los documentos según una representación conveniente cualquiera, siempre y cuando soporte las interfaces mostradas en esta especificación.

Algunas implementaciones del DOM serán programas existentes que usen las interfaces del DOM para acceder a programas escritos mucho antes de que existiera la especificación del DOM. Por tanto, el DOM se ha diseñado para evitar dependencias de la implementación. En particular,

  1. Los atributos definidos en el IDL no implican objetos concretos que deban tener miembros de datos específicos – en las correspondencias con cada lenguaje, se transforman en pares de funciones get()/set(), no en un miembro de datos. (Los atributos de sólo lectura sólo tendrán una función get().)
  2. Las aplicaciones DOM pueden proporcionar interfaces adicionales y objetos que no se encuentren en esta especificación y seguir siendo considerardas como conformes con el DOM.
  3. Debido a que especificamos interfaces, y no los objetos reales que deben ser creados, el DOM no puede saber a qué constructores llamará una implementación. En general, los usuarios del DOM llamarán a métodos createXXX() de la clase Document para crear estructuras del documento, y las implementaciones del DOM crearán sus propias representaciones internas de dichas estructuras en sus implementaciones de las funciones createXXX().

Limitaciones del Nivel 1

La especificación del Nivel 1 del DOM se limita deliberadamente a aquellos métodos necesarios para representar y manipular la estructura y el contenido de documentos. El plan para los futuros Niveles de la especificación del DOM es proporcionar:

  1. Un modelo de estructura para el subconjunto interno y el subconjunto externo.
  2. Validación contra un esquema.
  3. Control para representar documentos por medio de hojas de estilo.
  4. Control de acceso.
  5. Seguridad de hilos de proceso o threads.
  6. Eventos.

Copyright © [1/8/1998] World Wide Web Consortium, (Massachusetts Institute of Technology, Institut National de Recherche en Informatique et en Automatique, Keio University). All Rights Reserved. Legales.

Fuente Original (clic aquí).


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder