XML Schema y DTDs

XML se ha consolidado definitivamente como un lenguaje est�ndar de informaci�n, tanto como medio de persistencia como medio de intercambio de informaci�n. En estas aplicaciones es de mucha relevancia qu� posibilidades nos ofrece esta tecnolog�a de cara al modelado y la validaci�n de la informaci�n.

En primer lugar es importante insistir en la necesidad, cada vez mayor, de poder estructurar correctamente, y de un modo m�s intuitivo, la informaci�n. Al igual que con la creaci�n de la programaci�n estructurada y posteriormente el almacenamiento relacionado de la informaci�n, actualmente est� claro que ya no basta con almacenar la informaci�n identificando con que otros elementos est� relacionada, sino que empieza a ser necesario, al igual que en el paradigma de la orientaci�n a objetos, jerarquizar y estructurar la informaci�n.

Para proceder a esta estructuraci�n dentro de un documento XML se han propuesto distintas soluciones dentro del entorno de W3C, todas enfocadas a definir un patr�n 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 proposici�n, 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 exposici�n de las diferencias entre las DTDs y los XML Schemas es importante echar un r�pido vistazo a de d�nde y c�mo surgieron las dos principales soluciones que aqu� tratamos.

Inicialmente el uso de las DTDs se debe a SGML, en el cual describ�an no s�lo el vocabulario necesario para identificar todos los elementos de que iba a constar nuestro documento, si no que tambi�n expresaba la estructura que dichos elementos deb�a respetar. Con la creaci�n de XML, que recordemos que no es m�s 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 m�todos para describir esas necesidades inherentes a XML, con esta idea se cre� XML Schema, se pretend�a mejorar y ampliar la utilidad de las DTDs, para ello se necesitaban ciertas mejor�as que pasaremos a comentar m�s adelante.

.��QU� SON LAS DTDS?

Como hemos indicado antes, una DTD es una especificaci�n y estructuraci�n necesaria que permite validar el contenido estructural y formal de un documento de SGML (y XML). Las DTDs se pueden usar para la definici�n de modelos de contenido, es decir, en que orden y que elementos pertenecen a un elemento de orden superior en la jerarqu�a del documento; adem�s 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 informaci�n. El motivo de la creaci�n de este nuevo est�ndar para realizar la labor de las DTDs es, b�sicamente, la utilidad. Durante un tiempo, y a falta de otra soluci�n m�s ajustada, se emplearon los mecanismos que proporcionaba SGML para modelizar la informaci�n en XML. Pero el descubrimiento de nuevas aplicaciones de XML al margen de la estructuraci�n de documentos forz� la creaci�n 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

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP