Está en la página 1de 9

XML Schema y DTDs

Septiembre 2001
Copyright Advanced Quality Solutions 2001

ndice
INTRODUCCIN OBJETIVO HISTORIA QU SON LAS DTDS? QU ES XML SCHEMA? DTD VS SCHEMA DE LAS DTDS AL XML SCHEMA OTRA OPCIN: RELAX NG CONCLUSIONES BIBLIOGRAFA 1 1 1 1 2 3 4 6 7 7

XML Schema y DTDs

Introduccin
OBJETIVO
XML se ha consolidado definitivamente como un lenguaje estndar de informacin, tanto como medio de persistencia como medio de intercambio de informacin. En estas aplicaciones es de mucha relevancia qu posibilidades nos ofrece esta tecnologa de cara al modelado y la validacin de la informacin. En primer lugar es importante insistir en la necesidad, cada vez mayor, de poder estructurar correctamente, y de un modo ms intuitivo, la informacin. Al igual que con la creacin de la programacin estructurada y posteriormente el almacenamiento relacionado de la informacin, actualmente est claro que ya no basta con almacenar la informacin identificando con que otros elementos est relacionada, sino que empieza a ser necesario, al igual que en el paradigma de la orientacin a objetos, jerarquizar y estructurar la informacin. Para proceder a esta estructuracin dentro de un documento XML se han propuesto distintas soluciones dentro del entorno de W3C, todas enfocadas a definir un patrn externo al documento propiamente dicho que nos permita decir si el documento se adhiere a la estructura esperada o no; de las soluciones propuestas a lo largo del tiempo vamos a estudiar que diferencias y cambios hay en las dos principales en un ltimo apartado trataremos la idea de poner en juego una tercera proposicin, RELAX NG , la primera en aparecer fue el uso de las DTDs y posteriormente surgi la idea de los XML Schemas.

HISTORIA
Antes de iniciar la exposicin de las diferencias entre las DTDs y los XML Schemas es importante echar un rpido vistazo a de dnde y cmo surgieron las dos principales soluciones que aqu tratamos. Inicialmente el uso de las DTDs se debe a SGML, en el cual describan no slo el vocabulario necesario para identificar todos los elementos de que iba a constar nuestro documento, si no que tambin expresaba la estructura que dichos elementos deba respetar. Con la creacin de XML, que recordemos que no es ms que un subconjunto de SGML, fue necesario mantener la posibilidad de describir los elementos necesarios, al igual que en SGML, por ello se importaron las DTDs y todo su comportamiento. Posteriormente, y debido al uso principalmente, se vio la necesidad de emplear otros mtodos para describir esas necesidades inherentes a XML, con esta idea se cre XML Schema, se pretenda mejorar y ampliar la utilidad de las DTDs, para ello se necesitaban ciertas mejoras que pasaremos a comentar ms adelante.

QU SON LAS DTDS?


Como hemos indicado antes, una DTD es una especificacin y estructuracin necesaria que permite validar el contenido estructural y formal de un documento de SGML (y XML). Las DTDs se pueden usar para la definicin de modelos de contenido, es decir, en que orden y que elementos pertenecen a un elemento de orden superior en la jerarqua del documento; adems permiten, aun que de modo muy limitado, imponer ciertas restricciones sobre el tipo de los elementos.

XML Schema y DTDs

<!ELEMENT Articulo <!ELEMENT Cabecera <!ELEMENT Titulo ANY> <!ELEMENT Autor ANY> <!ELEMENT Contenido ................

(Cabecera, Contenido, Final)> (Titulo, Autor)>

(Estracto, Cuerpo)>

Ejemplo de DTD

QU ES XML SCHEMA?
Al igual que las DTDs, los Schemas describen la estructura de la informacin. El motivo de la creacin de este nuevo estndar para realizar la labor de las DTDs es, bsicamente, la utilidad. Durante un tiempo, y a falta de otra solucin ms ajustada, se emplearon los mecanismos que proporcionaba SGML para modelizar la informacin en XML. Pero el descubrimiento de nuevas aplicaciones de XML al margen de la estructuracin de documentos forz la creacin de otras soluciones que ayudasen a solventar los nuevos problemas a los que se enfrentaba el mercado. En el apartado siguiente veremos la principales diferencias que existen entre las DTDs y los XML Schemas.

<schema targetNamespace=http://www.aqs.es/Schema_y_DTDs xmlns=http://www.w3.org/2001/XMLSchema xmlns:AQS=http://www.aqs.es/Schema_y_DTDs > <element name=Articulo type=AQS:tArticulo /> <complexType name=tArticulo> <element name=Cabecera type=AQS:tCabecera/> <element name=Cuerpo type=AQS:tCuerpo/> <element name=Final type=AQS:tFinal/> </complezType> <complexType name=tCabecera> <element name=Titulo type=string/> <element name=Autor type=string/> </complexType> ................

Ejemplo de XML Schema

XML Schema y DTDs

DTD Vs Schema
Dado que el surgir de una nueva tecnologa donde ya exista otra es sntoma de que un grupo de gente cree que en el actual estado de ese campo o bien las cosas no estn bien hechas o bien falta algo por hacer vamos a mostrar en nuestro caso que limitaciones tenan las DTDs para que fuese necesaria la aparicin de XML Schema. Posee un lenguaje propio de escritura, lo cual deriva en problemas a la hora de: el aprendizaje no slo hay que aprender XML si no que adems hay que conseguir hacerse con el lenguaje de las DTDs , procesado del documento las herramientas y parsers que se empleen para tratar los documentos de XML deben ser capaces de procesar las DTDs .

No permite el uso de namespaces, estos permiten definir elementos con igual nombre dentro del mismo contexto, siempre y cuando se anteponga un prefijo al nombre del elemento. Tiene un tipado para los datos del documento extremadamente limitado, no permite definir el que un elemento pueda ser de un tipo numeral o de un tipo de fecha, slo presenta variaciones limitadas sobre strings. El mecanismo de extensin es complejo y frgil, est basado en sustituciones sobre strings. Lo peor de dichas extensiones es que realmente no hace explicitas las relaciones en ningn momento, es decir, dos elemento que tienen definido el mismo modelo de contenido no presentan ninguna relacin.

Ests pegas son superadas en la especificacin de XML Schema, permitiendo un lenguaje mucho ms expresivo. A parte de la expresividad, la presencia de los Schemas permite un intercambio de informacin mucho ms robusto. A parte de solventar los problemas antes expuestos, XML Schema, permite una serie de ventajas adicionales que se consideraron importantes: Una estructura de tipos mucho ms rica. En la segunda parte de la especificacin de XML Schema (XML Schema Part 2: Datatypes1) se definen los tipos base que se pueden emplear dentro de esquema de XML, e.g., integer, bolean, string, date, etc. Permite tipos definidos por el usuario, llamados Arquetipos, dndoles un nombre y que se pueden emplear en distintas partes dentro del Schema. Es posible agrupar atributos, haciendo ms comprensible el uso de un grupo de aspectos de varios elementos distintos, pero con denominador comn, que deben ir juntos en cada uno de estos elementos. El trabajo con namespaces2 (XML Schema Part 0: Primer3) est especificado, permitiendo, dentro de la dificultad que conlleva trabajar con ellos, validar documentos con varios namespaces.

1 2

http://www.w3.org/TR/xmlschema-2/ http://www.w3.org/TR/REC-xml-names/

XML Schema y DTDs

Sin embargo, la caracterstica que ms resalta la utilidad de XML Schema es la posibilidad de extender Arquetipos de un modo especfico, es decir permite lo que en trminos de orientacin a objetos se llama herencia. Considrese un esquema que extiende otro previamente hecho, se permite refinar la especificacin de algn tipo de elemento para, por ejemplo, indicar que puede contener algn nuevo elemento del tipo que sea; pero dejando el resto del esquema antiguo completamente intacto.

De las DTDs al XML Schema


En un principio, con la creacin de XML, se empez empleando las DTDs como modo de especificacin de modelos; la existencia de ms herramientas para ello hizo que gran parte de las empresas que empezaron a trabajar con XML adoptasen el uso de las DTDs. Actualmente el uso de las estas a quedado un ms restringido en su uso, y se est empezando a desarrollar de acuerdo al estndar de XML Schema; por ello, a continuacin, presentaremos las transformaciones que deberan realizarse para convertir una DTD en un Schema. En principio mostraremos a que elemento de XML Schema corresponden que elementos de las DTDs, aunque existen herramientas de traduccin (DTD2HTML4 en Perl, XMLSpy5,...) entre estos dos lenguajes, la siguiente tabla intenta expresar como funciona con el fin de una mejor comprensin.

DTD
ELEMENT

XML Schema
<element>

Comentarios
Crea un vnculo entre un nombre y unos atributos, modelos de contenido y anotaciones

#PCDATA ANY

Soportado como parte de un tipo simple <any> Posee distintos comodines para un mayor conjunto de posibilidades. Existe tambin <anyAttribute> con comodines similares. Se elimina la existencia de elementos descendientes del actual, diferenciando de la presencia de un string vaco en un elemento.

EMPTY

Soportado

3 4 5

http://www.w3.org/TR/xmlschema-0/#NS http://www.w3.org/2000/04/schema_hack/ http://www.xmlspy.com

XML Schema y DTDs

DTD
Modelo de Contenido , (Conector de secuencia) | (Conector de alternativas) ? (Opcional) +(Requerido y Repetible) *(Opcional y Repetible) ATTLIST Tipo de atributo CDATA, ID, IDREF, NOTATION, ... ENTITY

XML Schema
<complexType> <sequence> <disjunction> Soprtado Soportado Soportado <attributeGroup> Tipos <simpleType> predefinidos NO Soportado

Comentarios

Se han de emplear los atributos predefinidos de maxOccurs y minOccurs Se han de emplear los atributos predefinidos de maxOccurs y minOccurs Se han de emplear los atributos predefinidos de maxOccurs y minOccurs Se pueden agrupar declaraciones de <attributes>

Las entidades son declaradas en declaraciones de marcas en el XML Las entidades paramtricas permiten un mecanismo de bajo nivel que permite distintas cosas, algunas de estas se han intentado cubrir en XML Schema: La separacin entre <element> y <complexType> Grupos de atributos Grupos de modelos con nombre Mecanismos de extensin y restriccin de tipos Los mecanismos de <import> e <include> para componer esquemas El mecanismo de redefinicin de elementos

ENTITY%Parameter NO Soportada

Si bien esta tabla vale como aproximacin a los cambios que habra que realizar para poder migrar, cuando menos de ideas, del uso de las DTDs a XML Schema, es cierto que es necesario el uso de ciertos modelos UML para poder normalizar estos cambios, a este respecto es bueno resaltar el trabajo expuesto en Migrating from XML DTD to XML Schema using UML6.

http://www.rational.com/products/whitepapers/412.jsp

XML Schema y DTDs

Otra opcin: RELAX NG


Al igual que surgi XML Schema como una mejora necesaria sobre la idea en la que se fundamentaban las DTDs, han surgido distintas propuestas al margen de los Schemas, de estas ideas no vamos a quedar con una, RELAX NG, que es, a su vez, la fusin de otras dos iniciativas TREX y RELAX que para conseguir un mayor avance han decidido aunar fuerzas. Bsicamente, RELAX NG maneja documentos XML que representan esquemas e instancias a travs de un modelo abstracto de datos, esto que suena un poco oscuro viene a querer expresar que, para RELAX NG, un documento XML es la representacin de un elemento y que a su vez un elemento est formado por una serie de partes como son: un nombre, un contexto, un conjunto de atributos y una secuencia ordenada de cero o ms hijos. Y as con cada una de estas partes. Aunque la especificacin completa se puede encontrar en OASIS7, vamos a mostrar cuales son la principales diferencias, no tanto conceptuales si no de uso, de RELAX NG con respecto a XML Schema. En primer lugar es importante resaltar que RELAX NG, y sus precursores RELAX y TREX, son intentos de simplificar y/o potenciar la utilidad de las DTDs en general y en particular de XML Schema. Tambin es importante indicar que esta iniciativa no es oficial de W3.ORG, si bien est impulsndose dentro de un nutrido grupo de gente lideradas por James Clark8, MURATA Makoto9, y an no est reconocido por el estndar ni tan siquiera como recomendacin. En segundo lugar, podemos decir, sin mucho margen de error, que la principal mejora de RELAX NG respecto a XML Schema es la mayor simplicidad en manejo y aprendizaje que requiere. Como consecuencia de esta simplificacin renunciamos al uso de los <simpleType> y <complexType> a favor del uso de, nicamente, elementos y ciertas etiquetas especiales para marcar nmero requerido de apariciones, tipo de dato de un elemento, etc.

<grammar> <start> <element name=Cabecera> <ref name=Cabecera.class> </element> <zeroOrMore> <element name=Articulo> <ref name=Articulo.class> </element> </zeroOrMore> </start> <define name=Cabecera.class> <element name=Titulo>

Ejemplo de documento de RELAX NG

7 8 9

http://www.oasis-open.org/committees/relax-ng/spec-20010811.html jjc@jclark.com mura034@attglobal.net

XML Schema y DTDs

Conclusiones
En definitiva, tenemos un propsito: modelar y validar la informacin, y como tantas otras veces en tantas otras disciplinas, tenemos muchos modos de resolver el problema: DTDs, XML Schema, RELAX NG ... Ahora bien, podemos decir, sin comprometer nuestra visin ni otras posibles visiones del problema, que la solucin no es clara, si no que viene propiciada por las necesidades contextuales que el problema presente. En principio mostraremos la solucin que creemos mejor, que en nuestro caso fue XML Schema y el porqu de ella, principalmente relacionado con: la facilidad de tratamiento que se deriva de la escritura en XML, en lugar de emplear otros parsers para su reconocimiento, y lo extendido del estndar que permite encontrar suficiente informacin y apoyo en forma de documentos y herramientas. La carga semntica que, gracias a XML Schema, se ha podido expresar ha sido importante para el tratamiento de la informacin a niveles de organizacin y mejora del rendimiento, general y especfico, de las aplicaciones. Si bien gracias a XML se han podido realizar intercambios de informacin entre aplicaciones de muy distinta ndole, es gracias al modelado de estos documentos XML, mediante XML Schema, que se ha podido validar su contenido y, en consecuencia, mejorar el rendimiento. Pero todas las soluciones se pueden mejorar o, como mnimo, se pueden elegir otras sin mayor coste, en el caso de XML Schema frente a DTDs es casi seguro el acierto de la eleccin, dado que las DTDs estn cayendo en desuso en favor de las especificaciones escritas en XML, si bien estas todava son necesarias en las especificaciones formales no lo son tanto en el uso prctico final del que necesitan las aplicaciones. Por otro lado emplear XML Schema u otra solucin alternativa (en nuestro caso RELAX NG) es algo ms confusa y difcil de explicar, pero s es cierto que XML Schema est mostrando algunos fallos a la hora de validar contenidos complejos, dado que la estructura de estos queda especificada de un modo complicado en los esquemas y esto deriva en que los parsers que quieran poder validar completamente el contenido de un documento XML contra un modelo en XML Schema deben implementar soluciones muy complicada, que por otro lado no se producen en las nuevas vertientes nacidas a la sombra de XML Schema.

BIBLIOGRAFA
Norman Walsh. Understanding XML Schemas. XML.COM, 1999. Rick Jellife. The XML Schema Specification in Context. Academia Sinica Computing Centre, 2000. James Clark, MURATA Makato. RELAX NG Specification. OASIS, 2001. W3.ORG. XML Schema Part [0][1][2]. W3.ORG, 2000.

También podría gustarte