Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
<!ELEMENT Articulo <!ELEMENT Cabecera <!ELEMENT Titulo ANY> <!ELEMENT Autor ANY> <!ELEMENT Contenido ................
(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> ................
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/
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.
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
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
<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>
7 8 9
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.