XML Schema y DTDs

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.

Ejemplo de DTD
<!ELEMENT Articulo (Cabecera, Contenido, Final)>
<!ELEMENT Cabecera (Titulo, Autor)>
<!ELEMENT Titulo ANY>
<!ELEMENT Autor ANY>
<!ELEMENT Contenido (Estracto, Cuerpo)>
................

.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.

Ejemplo de XML Schema
<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/>f
	</complezType>
	<complexType name=tCabecera>
	<element name=Titulo type=string/>
	<element name=Autor type=string/>
	</complexType>
	................

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
¡SÉ EL PRIMERO EN COMENTAR!
Conéctate o Regístrate para dejar tu comentario.