XML Schema
De Wikipedia, la enciclopedia libre
XML Schema es un lenguaje de esquema utilizado para describir la estructura y las restricciones de los contenidos de los documentos XML de una forma muy precisa, más allá de las normas sintácticas impuestas por el propio lenguaje XML. Se consigue así, una percepción del tipo de documento con un nivel alto de abstracción. Fue desarrollado por el World Wide Web Consortium (W3C) y alcanzó el nivel de recomendación en mayo de 2001.
Tabla de contenidos |
[editar] Terminología
El término "XML Schema" es utilizado con varios significados dentro del mismo contexto de descripción de documentos, y es importante tener en cuenta las siguientes consideraciones:
- "XML Schema" (Esquema XML) es el nombre oficial otorgado a la recomendación del W3C, que elaboró el primer lenguaje de esquema separado de XML (la definición de tipo de documentos (DTD) forma parte de XML).
- Es habitual referirse a los esquemas como "XML schema" de forma genérica, pero se recomienda utilizar el término “documento esquema” (schema document) o "definición de esquema"(schema definition), y reservar “XML Schema” para la denominación de este lenguaje específico.
- Aunque genéricamente se utilice "XML schemas", XSDL (XML Schema Definition Language) es el nombre técnico de los lenguajes de esquema de XML como:
-
-
- Definición de Tipo de Documento (DTD)
- XML Schema
- RELAX NG
- Schematron
- Namespace Routing Language (NRL)
- Document Schema Definition Languages (DSDL)
- Document Definition Markup Language (DDML)
- Document Structure Description (DSD)
- SGML
- Schema for Object-Oriented XML (SOX)
-
[editar] W3C Schema XML
El World Wide Web Consortium (W3C) empezó a trabajar en XML Schema en 1998. La primera versión se convirtió en una recomendación oficial en mayo de 2001. Una segunda edición revisada está disponible desde octubre de 2004.
Esta recomendación está desarrollada en tres partes:
- XML Schema Parte 0 Primer: es una introducción no normativa al lenguaje, que proporciona una gran cantidad de ejemplos y explicaciones detalladas para una primera aproximación a XML Schema.
- XML Schema Parte 1 Structures: es una extensa descripción de los componentes del lenguaje.
- XML Schema Parte 2 Datatypes: complementa la Parte 1 con la definición de los tipos de datos incorporados en XML Schema y sus restricciones.
(véase Enlaces externos)
[editar] Componentes
XML Schema es un lenguaje de esquema escrito en XML, basado en la gramática y pensado para proporcionar una mayor potencia expresiva que la DTD, más limitadas en la descripción de los documentos a nivel formal.
Los documentos esquema (usualmente con extensión .xsd de XML Schema Definition (XSD)) se concibieron como una alternativa a las DTD, más compleja, intentando superar sus puntos débiles y buscar nuevas capacidades a la hora de definir estructuras para documentos XML. La principal aportación de XML Schema es el gran número de los tipos de datos que incorpora. De esta manera, XML Schema aumenta las posibilidades y funcionalidades de aplicaciones de procesado de datos, incluyendo tipos de datos complejos como fechas, números y strings.
[editar] Tipos de componentes
Los esquemas se construyen a partir de diferentes tipos de componentes:
-
- Elemento (element)
- Atributo (attribute)
- Tipo simple (simple type)
- Tipo complejo (complex type)
- Notación (notation)
- Grupo modelo nombrado (named model group)
- Grupo de atributos (attribute group)
- Restricción identidad (identity constraint)
Estos componentes ofrecen la posibilidad de combinar características de alto o bajo nivel:
-
- Alto nivel: Se encargan de ofrecer un significado semántico del contenido del documento. Analizan el contenido y extraen de él un significado. Éste puede estar predefinido en la declaración del esquema o se puede extraer de la misma estructura.
-
- Bajo nivel: Son características más concretas del documento que están incluidos en los diferentes campos del esquema y se accede a ellas de manera directa. Son los que se comparan directamente con el criterio de búsqueda definido y halla palabras concretas en la definición de los esquemas.
XML Schema supera muchas de las limitaciones y debilidades de las DTDs. Fue diseñado completamente alrededor de namespaces y soporta tipos de datos típicos de los lenguajes de programación, como también tipos personalizados simples y complejos. Un esquema se define pensando en su uso final.
[editar] Aplicaciones
XML Schema es el lenguaje probablemente más utilizado actualmente en los sistemas de clasificación de datos de cualquier tipo en un soporte electrónico (material digital y audiovisual). Además, está incluido en el estándar más conocido y general en este campo, el MPEG-7. Los esquemas XML permiten definir las restricciones y condiciones de los archivos XML a los que se asocia, facilitando el acceso a la información que contienen, tanto desde el punto de vista estructural como semántico.
Como todos los lenguajes de esquema de XML, XML Schema define un conjunto de reglas que debe cumplir un documento de XML para ser considerado "válido" según el esquema asociado. Sin embargo, a diferencia de la mayor parte de los otros lenguajes de esquema, XML Schema aporta la posibilidad de recopilar información de estructura y contenido para obtener el modelo de datos utilizado en el esquema.
Esta funcionalidad, denominada Post-Schema-Validation Infoset (PSVI), se realiza después de la validación del documento, e incrementa los usos del lenguaje en combinación con otras aplicaciones o lenguajes. Por ejemplo, se puede utilizar para transformar el documento en una jerarquía de objetos, a los cuales se puede acceder a través de un lenguaje de programación orientada a objetos (OOP).
[editar] Namespaces
La programación en Schema XML se basa en Namespaces. Podemos encontrar una analogía entre éstos y los llamados packages en Java. Cada Namespace contiene unos elementos y atributos que están estrechamente relacionados con el Namespace. Así, a la hora de definir un elemento o un atributo de un Namespace, siempre se creará una conexión entre los diferentes campos de éste. Además esta forma de trabajar nos permite relacionar elementos que no están en la misma Namespace.
Después de escribir un Schema XML se puede confirmar la correcta realización mediante la validación de esquemas XML: Validación XML.
[editar] Ejemplo
Un ejemplo de la estructura de un documento esquema vacío sería el siguiente:
<?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="0.1" xml:lang="es"> </xsd:schema>
Un ejemplo de definición con XML Schema sería el siguiente:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Libro"> <xsd:complexType> <xsd:sequence> <xsd:element name="Título" type="xsd:string"/> <xsd:element name="Autores" type="xsd:string" maxOccurs="10"/> <xsd:element name="Editorial" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="precio" type="xsd:double"/> </xsd:complexType> </xsd:element> </xsd:schema>
Podemos ver como en ambos casos se inician las declaraciones indicando la versión de XML que se va a utilizar y la codificación que se usa. Estos dos campos son necesarios para poder interpretar el esquema. Además, en la siguiente línea de código podemos ver como se redirecciona al usuario a la página que ofrece las pautas de creación de XML Schema en las que se basará la descripción del esquema.
El elemento raíz se llama “Libro” y tiene tres hijos (elementos anidados) y un atributo. Los hijos son “Titulo”,”Editorial” que deben aparecer una vez y “Autores” que puede aparecer de una a diez veces. El hecho de que estén agrupados en una secuencia indica que los elementos deben aparecer en orden, es decir, primero el “Titulo”, luego los “Autores” y por último la “Editorial”. Los tres elementos son de tipo string. El atributo de libro se llama “precio” y es de tipo double.