XML Schema y DTDs

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 fusi�n de otras dos iniciativas TREX y RELAX que para conseguir un mayor avance han decidido aunar fuerzas.

B�sicamente, RELAX NG maneja documentos XML que representan esquemas e instancias a trav�s 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 representaci�n 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 m�s hijos. Y as� con cada una de estas partes.

Aunque la especificaci�n completa se puede encontrar en OASIS, 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. Tambi�n es importante indicar que esta iniciativa no es oficial de W3.ORG, si bien est� impuls�ndose dentro de un nutrido grupo de gente lideradas por James Clark , MURATA Makoto , y a�n no est� reconocido por el est�ndar ni tan siquiera como recomendaci�n. 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 simplificaci�n renunciamos al uso de los <simpleType> y <complexType> a favor del uso de, �nicamente, elementos y ciertas etiquetas especiales para marcar n�mero requerido de apariciones, tipo de dato de un elemento, etc.

Ejemplo de documento de RELAX NG
<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�>
�������

COMPARTE ESTE ARTÍCULO

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