XML Schema
XML Schema és un llenguatge d'esquema utilitzat per descriure l'estructura i les restriccions dels continguts dels documents XML d'una forma molt precisa, més enllà de les normes sintàctiques imposades pel propi llenguatge XML. S'aconsegueix així, una percepció del tipus de document amb un alt nivell d'abstracció.
Va ser desenvolupat pel World Wide Web Consortium (W3C) i va arribar al nivell de recomanació al maig de 2001.
Terminologia
El terme "XML Schema" és utilitzat amb diferents significats dins del mateix context de descripció de documents, i és important tenir presents les següents considerancions:
- "XML Schema" (Esquema XML) és el nom oficial atorgat a la recomanació del W3C, que va elaborar el primer llenguatge d'esquema separat d'XML (la definició de tipus de document (DTD) forma part d'XML).
- És habitual referir-se als esquemes com "XML schema" de forma genèrica, però es recomana utilitzar el terme "document esquema" (schema document) o "definició d'esquema"(schema definition), i reservar "XML Schema" per la denominació d'aquest llenguatge específic.
- Encara que genèricament s'utilitzi "XML schemas", XSDL (XML Schema Definition Language) és el nom tècnic dels llenguatges d'esquema d'XML com:
- Definició de Tipus de Document (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)
W3C Schema XML
El World Wide Web Consortium (W3C) va començar a treballar en l'XML Schema el 1998. La primera versió es va convertir en recomanació oficial al maig de 2001. Una segona edició revisada està disponible des d'octubre de 2004.
Aquesta recomanació está desenvolupada en tres parts:
- XML Schema Part 0 Primer: és una introducció no normativa al llenguatge, que proporciona una gran quantitat d'exemples i explicacions detallades per a una primera aproximació a l'XML Schema.
- XML Schema Part 1 Structures: és una extensa descripció dels components del llenguatge.
- XML Schema Part 2 Datatypes: complementa la Part 1 amb la definició dels tipus de dades incorporats en l'XML Schema i les seves restriccions.
(vegi Enllaços externs)
Components
XML Schema és un llenguatge d'esquema escrit en XML, basat en la gramàtica i pensat per proporcionar una major potència expressiva que la DTD, més limitada en la descripció dels :*Tipus complexe (complex type)
- Notació (notation)
- Grup model anomenat (named model group)
- Grup d'atributs (attribute group)
- Restricció identitat (identity constraint)
Aquests components ofereixen la possibilitat de combinar característiques d'alt o baix nivell:
- Alt nivell: S'encarreguen de donar un significat semàntic del contingut del document. Analitzen el contingut i extreuen d'ell un significat. Aquest pot estar predefinit en la declaració de l'esquema o es pot extreure de la mateixa estructura.
- Baix nivell: Són característiques més concretes del document que estan incloses en els diferents camps de l'esquema i s'hi accedeix de manera directa. Són les que es comparen directament amb el criteri de recerca definit i troba paraules concretes en la definició dels esquemes.
XML Schema supera moltes de les limitacions i febleses de les DTDs. Va ser dissenyat completament al voltant de namespaces i suporta tipus de dades típiques dels llenguatges de programació, a més de tipus personalitzats simples i complexos. Un esquema es defineix pensant en el seu ús final.
Aplicacions
Namespaces
La programació a l'XML Schema es basa en Namespaces. En podem trobar una analogia entre aquests i els anomenats packages en Java. Cada Namespace en conté uns elements i atributs que estan estretament relacionats amb el Namespace. Així, a l'hora en cas de definir un element o un atribut d'un Namespace, sempre es crearà una connexió entre els diferents camps d'aquest. A més, aquesta forma de treballar, ens permet relacionar elements que no són en la mateixa Namespace però sí que mantenen una relació.
Després d'escriure un document XML es pot confirmar la correcta realització mitjantçant la validació d'esquemas XML: Validació XML.
Exemple
Un exemple de l'estructura d'un document esquema buit seria el següent:
<?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 exemple de definició amb XML Schema seria el següent:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="Llibre"> <xsd:complexType> <xsd:sequence> <xsd:element name="Titol" type="xsd:string"/> <xsd:element name="Autors" type="xsd:string" maxOccurs="10"/> <xsd:element name="Editorial" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="preu" type="xsd:double"/> </xsd:complexType> </xsd:element> </xsd:schema>
Podem veure com en ambdós casos s'inicien les declaracions indicant la versió de XML que s'utilitzarà i la codificació que s'usa. Aquests dos camps són necessaris per a poder interpretar l'esquema. A més, a la següent línia de codi podem veure com es redirecciona a l'usuari a la pàgina que ofereix les pautes de creació d'XML Schema en les que es basarà la descripció de l'esquema.
L'element arrel s'anomena "Llibre" i té tres fills (elements niats) i un atribut. Els fills són "Titol","Editorial" que han d'aparèixer una vegada i "Autors" que pot aparèixer d'una a deu vegades. El fet que estiguin agrupats en una seqüència indica que els elements han d'aparèixer en ordre, és a dir, primer el "Titol", després els "Autors" i finalment l'"Editorial". Els tres elements són de tipus string. L'atribut de llibre s'anomena "preu" i és de tipus double.
Vegi també
Tutorials