Xml Schema
Format Xml Schema utilisé par Up ! eXtended Markup Language
Xml Schema permet de décrire la structure d'un flux Xml en lieu et place de la Document Type Definition (DTD). L'espace de noms de Xml Schema est xmlns:xschema=http://www.w3.org/2001/xmlschema"
.
Voici les principaux éléments :
- xchema:element permet de définir un objet qui une instance d'un type.
- xchema:annotation décrit le schéma.
- xchema:element permet de définir un élément. Il est associé à un type.
- Un type est soit :
- Un type simple pré-défini tel :
- xchema:boolean pour un booléen.
- xchema:integer pour un entier.
- xchema:double pour un réel.
- xchema:hexBinary pour un binaire.
- xchema:string pour une chaîne de caractères.
- xchema:dateTime pour une date et heure.
- Un type simple construit avec :
- xchema:list pour un choix parmi un ensemble de valeurs de même type.
- xchema:union pour un choix parmi un ensemble de valeurs de type différent.
- Un type complexe construit avec l'élément xchema:complexType.
- Chacune de ses propriétés est déclarée par un élément qui est soit xchema:element pour un balise imbriquée ou soit xchema:attribute pour un attribut.
- L'ordre de déclaration des propriétés est important. Il doit être respecté à l'usage dans le fichier Xml.
- Les propriétés peuvent être organisées en séquence, via l'emploi de l'élément xchema:sequence, ou en choix parmi un ensemble, via l'emploi de l'élément xchema:union.
- Une propriété possède une cardinalité qui (1,1) par défaut, peut appartenir à une liste de valeurs, être obligatoire ou non, etc.
- Un type complexe peut être nommé ou imbriqué i.e. défini au niveau de la propriété qui l'emploie.
S'il est nommé, il doit être déclaré dans le schéma et ses propriétés ne peuvent posséder des contraintes.
- Un type déjà existant qui est référencé.
Syntaxe de Xml Schema
Cette grammaire ne déclare que les éléments et leurs imbrications possibles. Les propriétés ne sont pas mentionnées.
Schema :
<xschema:schema>
</xschema:schema>
;
ListeDImportationsOption :
ListeDImportations :
Importation :
Inclusion :
<xschema:include>
</xschema:include>
;
Importation :
<xschema:import>
</xschema:import>
;
Redefinition :
<xschema:redefine>
</xschema:redefine>
;
ListeDeRedefinitionsOption :
ListeDeRedefinitions :
Redefinition2 :
ListeDeDefinitionsOption :
ListeDeDefinitions :
Definition :
AnnotationOption :
Annotation :
<xschema:annotation>
</xschema:annotation>
;
ListeAnnotationsOption :
ListeAnnotations :
Annotation2 :
<xschema:appinfo/>
| <xschema:documentation/>
;
ListeDElements :
Element :
<xschema:element>
</xschema:element>
;
TypeElementOption :
TypeSimpleOption :
TypeSimple :
<xschema:simpleType>
</xschema:simpleType>
;
TypeSimple2 :
RestrictionTypeSimple :
<xschema:restriction>
</xschema:restriction>
;
RestrictionsSimpleOption :
ListeRestrictionsOption :
ListeRestrictions :
Restriction :
<xschema:enumeration/>
| <xschema:fractionDigits/>
| <xschema:length/>
| <xschema:maxExclusive/>
| <xschema:maxInclusive/>
| <xschema:maxLength/>
| <xschema:minExclusive/>
| <xschema:minInclusive/>
| <xschema:minLength/>
| <xschema:pattern/>
| <xschema:totalDigits/>
| <xschema:whiteSpace/>
;
Liste :
<xschema:list>
</xschema:list>
;
Union :
<xschema:union>
</xschema:union>
;
ListeDeTypesSimplesOption :
ListeDeTypesSimples :
ListeDAttributsOption :
ListeDAttributs :
Attribut :
<xschema:attribute>
</xschema:attribute>
;
NImporteQuelAttributOption :
NImporteQuelAttribut :
<xschema:anyAttribute>
</xschema:anyAttribute>
;
TypeComplexe :
<xschema:complexType>
</xschema:complexType>
;
TypeComplexe2 :
ContenuSimple :
<xschema:simpleContent>
</xschema:simpleContent>
;
ContenuSimple2 :
RestrictionSimple :
<xschema:restriction>
</xschema:restriction>
;
ExtensionSimple :
<xschema:extension>
</xschema:extension>
;
ContenuComplexe :
<xschema:complexContent>
</xschema:complexContent>
;
ContenuComplexe2 :
RestrictionComplexe :
<xschema:restriction>
</xschema:restriction>
;
RestrictionComplexeOption :
RestrictionComplexe :
TypeComplexe3 :
TypeComplexe4Option :
GroupeDElements :
<xschema:group>
</xschema:group>
;
GroupeDElements2Option :
GroupeDElements2 :
Tout :
<xschema:all>
</xschema:all>
;
Choix :
<xschema:choice>
</xschema:choice>
;
Sequence :
<xschema:sequence>
</xschema:sequence>
;
ListeDElementsEtendusOption :
ListeDElementsEntendus :
ElementEtendu :
NImporteQuelElement :
<xschema:any>
</xschema:any>
;
GroupeDAttributs :
<xschema:attributeGroup>
</xschema:attributeGroup>
;
ListeDeClesOption :
ListeDeCles :
Cle :
<xschema:key>
</xschema:key>
| <xschema:keyref>
</xschema:keyref>
| <xschema:unique>
</xschema:unique>
;
Selecteur :
<xschema:selector>
</xschema:selector>
;
ListeDeProprietes :
Propriete :
<xschema:field>
</xschema:field>
;
Notation :
<xschema:notation>
</xschema:notation>
;
Eléments de Xml Schema
all
annotation
any
anyAttribute
appinfo
attribute
attributeGroup
choice
complexContent
complexType
documentation
element
enumeration
extension
field
fractionalDigits
group
import
include
key
keyref
length
list
maxExclusive
maxInclusive
maxLength
minExclusive
minInclusive
minLength
notation
pattern
redefine
restriction
selector
sequence
schema
simpleContent
simpleType
totalDigits
union
unique
Types pré-définis de Xml Schema
anyType
anyUri
base64Binary
boolean
date
dateTime
decimal
double
duration
ENTITY
ENTITIES
float
gDay
gMonth
gMonthDay
gYear
gYearMonth
hexBinary
ID
IDREF
IDREFS
int
integer
language
long
Name
NCName
negativeInteger
NMTOKEN
NMTOKENS
NOTATION
nonNegativeInteger
nonPositiveInteger
normalizedString
positiveInteger
QName
short
string
time
token
unsignedByte
unsignedInt
unsignedLong
unsignedShort
whiteSpace
Exemple d'un flux au format Xml utilisant Xml Schema
Schéma
Voici le schéma conservé dans le fichier http://www.up-comp.com/application/employes.xsd".
<xschema:schema xmlns:xschema="http://www.w3.org/2001/XMLSchema">
<xschema:annotation>
<xschema:documentation xml:lang="fr">
Schéma sur l'exemple générique des employés.
</xschema:documentation>
</xschema:annotation>
<xschema:element name="ListeEmployes" type="TypeListeEmployes"/>
<xschema:complexType name="TypeEmploye">
<xschema:sequence>
<xschema:element name="Nom" type="xschema:string"/>
<xschema:element name="Salaire" type="xschema:double"/>
<xschema:element name="DateEmbauche" type="xschema:dateTime"/>
</xschema:sequence>
<xschema:attribute name="Numero" type="xschema:integer"/>
</xschema:complexType>
<xschema:complexType name="TypeListeEmployes">
<xschema:sequence>
<xschema:element name="Employe" type="TypeEmploye" minOccurs="0" maxOccurs="unbounded"/>
</xschema:sequence>
</xschema:complexType>
</xschema:schema>
Données
Le schéma est référencé dans le fichier de données par l'emploi de xschemaInstance:schemaLocation qui admet une liste de valeurs :
- La première valeur est l'espace de noms associé au schéma.
- La seconde valeur est le schéma.
<?xml version="1.0"?>
<ListeEmployes
xmlns="http://www.up-comp.com/application/employes"
xmlns:xschemaInstance="http://www.w3.org/2001/XMLSchema-instance"
xschemaInstance:schemaLocation="http://www.up-comp.com/application/employes http://www.up-comp.com/application/employes.xsd">
<Employe Numero=7724>
<Nom>Mister Scott</Nom>
<Salaire>1000.0</Salaire>
<DateDEmbauche>2005-12-28 10:50:00</DateDEmbauche>
</Employe>
<Employe Numero=7832>
<Nom>Mister Allen</Nom>
<Salaire>1200.0</Salaire>
<DateDEmbauche>2002-01-26 11:09:10</DateDEmbauche>
</Employe>
<Employe Numero=7948>
<Nom>Lady Smith</Nom>
<Salaire>1400.0</Salaire>
<DateDEmbauche>2004-02-10 15:22:20</DateDEmbauche>
</Employe>
<Employe Numero=7954>
<Nom>Miss King</Nom>
<Salaire>2000.0</Salaire>
<DateDEmbauche>2003-04-01 08:12:20</DateDEmbauche>
</Employe>
</ListeEmployes>