Usuario:Lmorillas/modulo lenguajes de marcas/xml/xml schema

Documentación

 * http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/
 * http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html
 * http://www.w3schools.com/schema/
 * http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=1

Objetivo
XML Schema es una alternativa a DTD basada en XML. Describe la estructura de un documento XML.
 * Definir la estructura correcta de bloques de un documento XML
 * Define los elementos y atributos que pueden aparecer
 * Define qué elementos son hijos, cuántos hijos y en qué orden.
 * Define si un elemento puede contener texto o tiene que estar vacío.
 * Define los tipos de datos de elementos y atributos.
 * Define valores fijos y por defecto

A diferencia del DTD:
 * es un modelo extensible y tiene más poder expresivo.
 * están escritos en XML
 * soporta tipos de datos y namespaces
 * son una recomendación del W3C

El tipo de documento XML
La estructura de un documento XML la forman:
 * Su vocabulario (elementos y atributos)
 * El modelo de contenido de cada elemento
 * Los tipos de datos del contenido

Componentes de un esquema

 * Componentes primarios: tipos de datos, elementos y atributos
 * Componentes secundarios: definiciones especiales (grupos de atributos, restricciones y anotaciones)
 * Componentes de ayuda. Se usan en otros componentes

Un ejemplo
(fuente: http://www.aafunky.com/w3c/xmlschema/xmlschema-0es.html)

XML Schema:

Elemento schema

 * Declaración del espacio de nombres de la recomendación del W3C
 * Los hijos directos de schema son declaraciones y definiciones globales
 * Elemento raíz (declarado a nivel global).
 * Sequence: los elementos tienen que aparecer en el mismo orden (especificador)
 * Tipos simples (limitan el texto que se puede insertar como valor)
 * Tipos complejos (pueden ser anónimos)
 * element
 * para declarar elementos. Atributos: name, ref, type, sympleType, complexType


 * attribute
 * para declarar atributos. Nomalmente dentro de attributeGroup. Tipos: simpleType o type. Siempre son de tipo simple. Frecuencia: use: required, optional, prohibited,.


 * sequence
 * los elementos tienen que aparecer en el mismo orden


 * cardinalidad
 * minOccurs, maxOccurs. Si no se especifica nada: 1.


 * Restricciones de valor
 * fixed, default,