Estructura del XML


Para que un documento XML tenga validez, se deberá establecer a que estructura se adhiere la información que hay en el documento. Esto se realiza mediante un esquema, que describe la organización de los datos de marcado y de los caracteres en un documento XML.

Los esquemas posibilitan la creación de vocabularios XML específicos, definiendo claramente las relaciones entre los elementos del documento XML. De esta manera se pueden definir vocabularios para el ámbitos del dominio que se necesiten, desde marcar información para dispositivos WAP (vocabulario WML) o hasta para representar gráficos (vocabulario SVG).

Los esquemas establecen restricciones en la estructura de los documentos de dos formas:

Estableciendo el modelo de contenido de los documentos, es decir, definiendo el orden y la anidación de los elementos.

Estableciendo los tipos de datos de los elementos.

Las dos tecnologías más extendidas son los DTD y los schema XML

DTD

Tienen su origen en el SGML, y sirve como mecanismo estándar de esquemas para validar documentos SGML. Puesto que XML es un subconjunto de SGML, parece razonable usar la misma solución de esquemas. Una gran ventaja del uso de las DTD consiste en que las herramientas SGML ya existentes sirven para manipularlas.

Una crítica a los DTD es que usen una sintaxis propia, bastante críptica y poco intuitiva, siendo que podían haber usado el lenguaje XML (o SGML en su día) para ello.

Los DTD describen información vital sobre la estructura de un documento que utiliza declaraciones de marcado; se pueden situar dentro del documento XML (DTD interna), fuera (DTD externa) o en los dos sitios. Habitualmente se usará una DTD externa porque puede ser usada por varios documentos XML, y además aporte orden a la organización de los documentos. Solo sería recomendable la creación de una DTD interna en los casos en los que la creación de un documento supusiera un gran coste.

En los DTD se pueden incluír los siguientes tipos de declaraciones de marcado:

Los tipos de elementos que se permiten en el documento, así como los modelos de contenido que tendrán estos elementos.

Los atributos que se pueden asignar a cada elemento.

Las entidades que se permiten en el documento.

Estas declaraciones de marcado definen la estructura lógica y física de una clase de documentos, lo que también se conoce como tipo de documento.

Los DTD también pueden ayudar a la hora de desarrollar el contenido de los documentos XML, porque contienen información sobre los datos; por ejempo, para saber usar un elemento o ponerle valores adecuados a un atributo.

Schema XML

El W3C ha desarrollado esta alternativa para definir la estructura de un documento XML, con sintaxis XML. Se llaman esquemas XSD (XML Schema Definition Language). La primera versión fue liberada en Mayo del 2001.

Tanto los DTD como los schema XML describen los modelos de contenido de los documentos, permitiendo la validación de los documentos. Pero los schema XML van más allá, permiten asociar tipos de datos a los elementos. Esto permite que en la validación de un documento XML también se valide su contenido. En una DTD sólo se permite establecer que el contenido de un elemento sea una cadena de texto; mientras que en los schema XML se puede validar que sea, por ejemplo, un entero.

Otra ventaja respecto a las DTD consiste en que los schema XML están expresados en sintaxis XML, habiendo sólo que aprender unas pocas etiquetas para codificar este tipo de elementos.

Pero en contra, tenemos que las herramientas existentes para SGML valen para los DTD.

El modelo de contenido de los schema XML es abierto, esto quiere decir que es posible añadir elementos y atributos secundarios que hubieran sido definidos en el esquema del documento. Contrariamente, los DTD tienen modelos de contenido cerrados, lo que hace que fuese necesario declarar todos los elementos y atributos que se fueran a usar.

El modelo de contenido abierto proporciona flexibilidad, porque permite ampliar el vocabulario de los esquemas y seguir siendo capaz de crear documentos válidos. Esto ayuda a la reutilización del software, porque es posible usar un schema XML existente, al que le podría faltar algún elemento o atributo, para validar un nuevo documento XML.

Los schema XML permiten la herencia de elementos, consistente en asociar elementos derivados entre si, reteniendo las relaciones existentes entre ellos. Esta característica no existía en los DTD, en donde se usan entidades de parámetros para almacenar componentes de declaración que se utilizaban con frecuencia, pero que no mantienen información sobre los elementos que utilizan eses datos, simplemente substituyen texto en el lugar adecuado.

También permiten los tipos de datos restringidos, con los que se puede controlar el intervalo o el formato de los datos de un determinado elemento o atributo.

El uso de los espacios de nombres en los schema XML permite que dos elementos distintos tengan el mismo nombre (cada uno correspondiendo a su espacio de nombres). Para ello utilizan los URI (Uniform Resource Identifiers), que garantiza que sean únicos los recursos a los que se hace referencia.

RELAN NG

Es otra solución para representar la estructura de un documento XML, que usa sintaxis XML. Su principal caracteristica es la facilidad de aprendizaje y de uso. Ha sido desarrollado en OASIS por el RELAX NG Technical Committee, y la especificación fue publicada en diciembre del 2001.

Es una evolución y generalización de los DTDs. Pero además soporta espacios de nombres; y permite añadir librerías de datos, desde las más simple consistentes sólo en strings, hasta otras más complejas, como las definidas en XML Schema Part 2: Datatypes (evidentemente, también están permitidas en Schema XML).

Los “schema” XML son una solución mejor que los DTD, de forma clara; pero hay que tener en cuenta que, relativamente, son de reciente creación, y que han sido creados una vez que habían sido vistas las carencias de los DTD para los documentos XML. Posteriormente a la existencia de estas dos alternativas, apareció RELAX NG, que venía a simplicar la sintaxis de la opción del Schema XML.

Algunos motivos para usar los DTD pueden ser que existen desde la creación de SGML y muchos sistemas funcionan en base a ellos

Ejemplo de estructura de XML:

estructura en arbol de xml


Ir arriba