Esquemas Xml

Esquemas Xml

Declaración de tipos de valores

Enteros, cadenas, etc.

Restricciones de valores mínimos/máximos

Tipos definidos por el usuario

Tipos específicos mediante la restricción de otros tipos

Extensión de tipos complejos mediante una especie de “herencia”

Es un superconjunto de DTDs

Restricciones de unicidad y claves ajenas

XML Schema se especifica en términos de XML

Está integrado por espacios de nombres: diferentes partes de un documento pueden adaptarse a esquemas diferentes PERO: es significativamente más complicado que las DTD

Un intento de reparar muchas de estas deficiencias de DTD

produjo un lenguaje de esquema más sofisticado, XML Schema.Presentamos aquí un ejemplo de XML Schema y se listan algunas áreas en las cuales mejora a las DTDs sin dar mucho detalle de la sintaxis de XML Schema.

GALERIA DE FOTOS

(:includeurl http://picasaweb.google.com/gustavolopez581/Xml/photo#s5121453097223703314 :)

El ejemplo muestra cómo la DTD del tema 7.3.1 (ejemplo 1)se puede representar mediante XML Schema:

xsd:schema xmlns:xsd = «http://www.w3.org/2001/XMLSchema»>

xsd:element name = «banco» type = «Tipo Banco» />

xsd:element name = «cuenta»>

complexType>

sequence>

element name = «número-cuenta» type = «xsd:string»/>

element name = «nombre-sucursal» type = «xsd:string»/>

element name = «saldo» type = «xsd:decimal»/>

sequence>

complexType>

element>

element name = «cliente»>

element name = «número-cliente» type = «xsd:string»/>

element name = «calle-cliente» type = «xsd:string»/>

element name = «ciudad-cliente» type = «xsd:string»/>

element>

element name = «impositor»>

:complexType>

sequence>

element name = «nombre-cliente» type = «xsd:string»/>

element name = «número-cuenta» type = «xsd:string»/>

sequence>

complexe>Typ

element>

complexType name = «Tipo Banco»>

sequence>

element ref = «cuenta» minOccurs = «0» maxOccurs = «unbounded»/>

element ref = «cliente» minOccurs = «0» maxOccurs = «unbounded»/>

element ref = «impositor» minOccurs = «0» maxOccurs = «unbounded»/>

sequence>

:complexType>

schema>

El primer elemento es el elemento raíz banco, cuyo tipo se declara posteriormente. En el ejemplo se definen después los tipos de los elementos cuenta, cliente e impositor.

Obsérvese el uso de los tipos xsd:string y xsd:decimal para restringir los tipos de los elementos de datos. Finalmente, el ejemplo define el tipo Tipo Banco para contener cero o más apariciones de cada cuenta, cliente e impositor. XML Schema puede definir el número mínimo y máximo de apariciones de subelementos mediante minOccurs y maxOccurs. El valor predeterminado para las apariciones máxima y mínima es 1, por lo que se tiene que especificar explícitamente para permitir cero o más cuentas, impositores y clientes.

Entre los beneficios que ofrece XML Schema respecto a las DTDs se encuentran los siguientes:

• Permite crear tipos definidos por el usuario

• Permite que el texto que aparece en los elementos esté restringido a tipos específicos tales como tipos numéricos en formatos específicos o incluso tipos más complicados como listas o uniones.

• Permite restringir los tipos para crear tipos especializados, por ejemplo especificando valores mínimo y máximo.

• Permite la extensión de tipos complejos mediante el uso de una forma de herencia.

• Es un superconjunto de DTDs.

• Permite restricciones de unicidad y de clave externa.

• Está integrado con espacios de nombres para permitir a diferentes partes de un documento adaptarse a un esquema diferente.

• Él mismo se especifica mediante sintaxis XML como muestra en el ejemplo anterior.

Sin embargo, el precio a pagar por estas características es que XML Schema es significativamente más complicado que las DTDs.

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 nvierta un esquema XML en un formulario Web completo con código Java Script generado automáticamente que valide los datos conforme se vayan introduciendo.

(:includeurl http://docs.google.com/Present?docid=ddbtd468_0vdm6bw:)

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.

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})?. 



 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.

Gustavo Daniel Lopez Reyes No control. 06210041


Mis sitios nuevos:
Emprendedores
Politica de Privacidad