Debe introducir al menos 3 caracteres en el buscador.
Inicio / Wikis / Apuntes / Introducción a XML - Esquemas XML

Introducción a XML - Esquemas XML

 ----- 
Creative Commons Apuntes de Mononeurona - 27 de Octubre de 2005
Temas Relacionados: XML
14. Esquemas XML
Con los esquemas XML se tiene un mayor poder para definir lo que parece un documento XML válido. Presentan varias ventajas sobre los DTDs:

Los esquemas usan sintaxis XML. En otras palabras, un esquema XML es un documento XML. Esto significa que se puede procesar un esquema igual que cualquier otro documento. Por ejemplo, se puede escribir una hoja de estilo XSLT que convierta un esquema XML en un formulario Web completo con código JavaScript generado automáticamente que valide los datos conforme se vayan introduciendo.

Los esquemas XML soportan tipos de datos. Mientras que los DTDs no soportan tipos de datos, esta claro que esos tipos de datos fueron desarrollados con una perspectiva de publicación. Los esquemas XML soportan todos los tipos originales de los DTDs (cosas como Ids y referencias ID). También soportan enteros, números en punto flotante, fechas, horas, cadenas de texto, URLs y otros tipos de datos útiles para el procesado y validación de datos. Los esquemas XML son extensibles. Además de los tipos de datos definidos en la especificación de esquemas XML, se pueden crear tipos de datos propios y se pueden derivar nuevos tipos de datos a partir de otros. Los esquemas XML tienen mayor poder de expresión. Por ejemplo, con esquemas XML se puede definir que el valor del un atributo <estado> no puede tener una longitud mayor de 2 caracteres, o que el valor de un elemento <codigo-postal> debe cumplir la expresión regular [0-9]{5}(-[0-9]{4})?. No se puede hacer ninguna de estas cosas con los DTDs.

Un esquema XML de ejemplo

A continuación presentamos un esquema XML que coincide con nuestra DTD original de nombre y dirección postal. Añado dos restricciones: el valor del elemento <estado> debe tener exactamente dos caracteres de longitud y el valor del elemento <codigo-postal> debe cumplir con la expresión regular [0-9]{5}(-[0-9]{4})?. Aunque el esquema es mucho mayor que la DTD, expresa de manera más clara qué documentos serán válidos. Este es el esquema:

<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">; <xsd:element name="direccion"> <xsd:complexType> <xsd:sequence> <xsd:element ref="nombre"/> <xsd:element ref="calle"/> <xsd:element ref="ciudad"/> <xsd:element ref="estado"/> <xsd:element ref="codigo-postal"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="nombre"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titulo" minOccurs="0"/> <xsd:element ref="nombre"/> <xsd:element ref="apellidos"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element <xsd:element <xsd:element <xsd:element <xsd:element type="xsd:string"/> name="titulo" name ="nombre" type="xsd:string"/> name ="apellidos" type="xsd:string"/> name ="calle" type="xsd:string"/> name ="ciudad" type="xsd:string"/> <xsd:element name ="estado"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name ="codigo-postal"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:schema>

Definición de elementos en los esquemas

El esquema XML presentado en Un esquema XML de ejemplo en la página 17, define varios elementos XML con el elemento <xsd:element>. Los primeros dos elementos definidos,<direccion> y <nombre>, estan compuestos por otros elementos. El elemento <xsd:sequence> define la secuencia de elementos contenidos en cada uno de ellos. A continuación mostramos un ejemplo:

<xsd:element name="direccion"> <xsd:complexType> <xsd:sequence> <xsd:element <xsd:element <xsd:element <xsd:element <xsd:element </xsd:sequence> </xsd:complexType> </xsd:element> ref="nombre"/> ref="calle"/> ref="ciudad"/> ref="estado"/> ref="codigo-postal"/>

Como en la versión DTD, el esquema XML de ejemplo define que <direccion> contiene un elemento <nombre>, un <calle>, un <ciudad>, un <estado>, y un <codigo-postal>, en ese orden. Se debe notar que el esquema define un nuevo tipo de datos con el elemento <xsd:complexType>. Definir la mayor parte de los elementos que contienen texto es sencillo. Unicamente se declara el nuevo elemento y se le da un tipo de datos xsd:string:

<xsd:element <xsd:element <xsd:element <xsd:element <xsd:element name="titulo" type="xsd:string"/> name="nombre" type="xsd:string"/> name="apellidos" type="xsd:string"/> name="calle" type="xsd:string"/> name="ciudad" type="xsd:string"/>

Definición del contenido de los elementos en los esquemas

El esquema de ejemplo define restricciones para el contenido de dos elementos: el contenido del elemento <estado> debe tener una longitud de dos caracteres, y el contenido de un elemento <codigo-postal> debe cumplir la expresión regular [0-9]{5}(-[0-9]{4})?. Así es como se hace:

<xsd:element name="estado"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:length value="2"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="codigo-postal"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/> </xsd:restriction> </xsd:simpleType> </xsd:element>

Para los elementos <estado> y <codigo-postal>, el esquema define nuevos tipos de datos con restricciones. En el primer caso usa el elemento <xsd:length> y en el segundo usa <xsd:pattern> para definir una expresión regular que ese elemento debe cumplir. Este resumen solo araña la superficie de lo que los esquemas XML pueden hacer; hay libros enteros dedicados a este asunto. Para el propósito de esta introducción basta con decir que los esquemas XML son una manera muy potente y flexible de describir lo que un documento XML debe parecer.
Autor y licencia de 'Introducción a XML - Esquemas XML'
Mononeurona Extraído de: http://www.mononeurona.org/index.php?idp=316

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.

Wikis relacionados con 'Introducción a XML - Esquemas XML'

XML es un metalenguaje, es decir, un lenguaje hecho para poder construir otros lenguajes con... Más »
Este tutorial discute lo que es XML, por qué fue desarrollado y como está definiendo... Más »
XML es una tecnologia emergente para hacer explicita la estructura de los documentos por sobre... Más »
Dado que XML es un lenguaje establecido ampliamente en la comunidad de desarrolladores Web, existen... Más »
Dado que XML es un lenguaje establecido ampliamente en la comunidad de desarrolladores Web, existen... Más »
¿Estás seguro de que deseas eliminar este capítulo?