Les schémas XML

Transcription

Les schémas XML
L'Altruiste : Le guide des langages Web - Les schémas XML
L'Altruiste : Le guide des langages Web
Les schémas XML
Sommaire
1 / Introduction
2 / XML Schema Definition
2.1 / Les types de données
2.1.1 / La hiérarchie des types de données prédéfinies
2.2 / L'élément schema
2.3 / L'élément include
2.4 / L'élément import
2.5 / L'élément redefine
2.6 / L'élément element
2.7 / L'élément group
2.8 / L'élément any
2.9 / L'élément attribute
2.10 / L'élément attributeGroup
2.11 / L'élément anyAttribute
2.12 / L'élément complexType
2.13 / L'élément all
2.14 / L'élément choice
2.15 / L'élément sequence
2.16 / L'élément complexContent
2.17 / L'élément simpleContent
2.18 / L'élément extension
2.19 / L'élément simpleType
2.20 / L'élément list
2.21 / L'élément union
2.22 / L'élément restriction
2.23 / L'élément enumeration
2.24 / L'élément pattern
2.25 / L'élément totalDigits
2.26 / L'élément fractionDigits
2.27 / L'élément minInclusive
2.28 / L'élément maxInclusive
2.29 / L'élément minExclusive
2.30 / L'élément maxExclusive
2.31 / L'élément minLength
2.32 / L'élément maxlength
2.33 / L'élément length
2.34 / L'élément whiteSpace
2.35 / L'élément key
2.36 / L'élément keyref
2.37 / L'élément unique
2.38 / L'élément selector
2.39 / L'élément field
2.40 / L'élément annotation
2.41 / L'élément appinfo
2.42 / L'élément documentation
3 / XML-Data Reduced
3.1 / L'élément schema
3.2 / L'élément elementType
3.3 / L'élément element
3.4 / L'élément attributeType
3.5 / L'élément attribute
3.6 / L'élément datatype
3.6.1 / Référence des types de données XML
3.7 / L'élément group
3.8 / L'élément description
Modifié le 10/05/2003
Page 1 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
1 / Introduction
Les définitions de type de document (DTD) ont rapidement laissé apparaître des carences dans le
domaine des contraintes de structures et de données.
De plus, la syntaxe des DTD est issue du langage EBNF (Extended Backus Naur Form), beaucoup
plus compliqué et lourd que ne l'est le langage XML.
L'universalité du langage XML requiert la création d'un ensemble d'applications verticales allant
de la définition des documents (langage de schéma), en passant par leur structuration et composition
(langage XML) et jusqu'à leur présentation à l'utilisateur final (langage XSL). L'adoption d'un langage de
définition des documents basé sur XML, était donc inévitable afin de conserver une homogénéité dans
la sphère XML déjà fort bien pourvue.
Le langage de schéma XML apporte une grande souplesse et une puissance inégalée dans la
définition des documents XML.
La fonctionnalité la plus remarquable des schémas XML est la prise en charge des types de
données garantissant le contenu a affecter à un élément XML et apportant une validation plus efficace,
non seulement sur la structure du document, mais aussi sur son contenu. Ainsi, une balise destinée à
accueillir une date sera définie comme telle dans le schéma et par la suite sera en mesure de délivrer sa
valeur à un programme sans soucis de conversion d'une chaîne de caractères en date.
Le modèle de contenu devient davantage exhaustif avec les schémas XML qu'il ne l'était
auparavant avec les DTD. En effet, outre que les schémas définissent tous les éléments et la structure
constituant un document XML, ils déterminent également le nombre d'occurrences des éléments, gérent
les contenus mixtes, les éléments nommés, les groupes d'attributs ainsi que des annotations utilisés
pour la création d'une documentation à propos du modèle de contenu.
L'extensibilité des définitions des documents apportée par les schémas XML, facilite l'échange,
la fusion ou la réutilisation de données provenant d'une ou plusieurs sources. Effectivement, à
l'instar des documents XML, les schémas XML pourront désormais se combiner en se fusionnant
complètement ou partiellement afin de créer un modèle de contenu composite. D'ailleurs, plusieurs
schémas peuvent être référencés à l'intérieur d'un unique document XML et donc valider la structure et
le contenu de ce dernier.
La génération dynamique de documents XML et du modèle de contenu associé, devient alors
beaucoup plus commode. Evidemment, cela demande une certaine compatibilité entre les
schémas susceptibles d'être combinés. Grâce à cette normalisation, des schémas XML provenant d'un
fournisseur pourront être fusionnés sans peines avec ceux d'un distributeur dans le but de créer un
modèle de contenu spécifique destiné à la validation de documents XML générés à la volée.
Le langage de schémas constitue donc une pièce essentielle dans la sphère XML, assurant une
évolutivité, un dynamisme et une souplesse que ne pouvait assumer le langage de DTD.
Les spécifications de schémas XML peuvent être consultées directement sur le site du W3C ou sur
XMLfr pour une tradutcion de XML Schema tome 0 et XML Schema tome 1.
Modifié le 10/05/2003
Page 2 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2 / XML Schema Definition
La définition de schéma XML se réalise par l'intermédiaire de plusieurs éléments chargés de
représenter l'arborescence et les informations d'un document XML.
L'élément racine d'un schéma XML (schema) peut incorporer des schémas extérieurs avec un espace
de noms identique ou différent.
Les éléments et les attributs XML sont chacun spécifiquement représentés dans un schéma. Il est
possible de les regrouper pour des raisons de commodités, ou encore de représenter des noeuds XML
indéfinis par des éléments de schéma génériques.
Le contenu des éléments XML est également décrit précisément tout d'abord par un type de
données pouvant être soit simple, soit complexe.
Un type complexe signifie qu'un élément XML pourrait posséder des attributs, des éléments et une
valeur simple.
<element attribut="valeur">
Valeur de l'élément
<element_enfant_1/>
<element_enfant_N/>
</element>
L'ordre et l'apparition des éléments enfants ainsi que des alternatives peuvent être de la même facon
définis dans le schéma XML.
Un type simple signifie quant à lui que l'élément ou l'attribut XML ne contient qu'une valeur simple.
<element>
Valeur de l'élément
</element>
Les valeurs d'un type de données simple peuvent répondre à des critères déterminés rigoureusement
à l'aide d'éléments facettes.
Une facette est un aspect de la définition d'une valeur simple. Les valeurs peuvent être restreintes
par rapport à une liste de possiblités, à des limitations, à un modèle d'expression régulière, à une
longueur et à un comportement.
Certains éléments de schéma XML permettent d'exprimer des contraintes d'unicité et de
référencement par rapport au contenu de plusieurs éléments et attributs XML. Ces contraintes d'identité
sont semblables aux clés primaires ou étrangères des bases de données SQL.
Enfin, les éléments d'annotation offrent la possiblité soit d'insérer des commentaires, soit des
informations destinées à des applications.
Sommaire
2.1 / Les types de données
2.2 / L'élément schema
2.3 / L'élément include
2.4 / L'élément import
2.5 / L'élément redefine
2.6 / L'élément element
2.7 / L'élément group
2.8 / L'élément any
2.9 / L'élément attribute
2.10 / L'élément attributeGroup
2.11 / L'élément anyAttribute
2.12 / L'élément complexType
Modifié le 10/05/2003
Page 3 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.13 / L'élément
2.14 / L'élément
2.15 / L'élément
2.16 / L'élément
2.17 / L'élément
2.18 / L'élément
2.19 / L'élément
2.20 / L'élément
2.21 / L'élément
2.22 / L'élément
2.23 / L'élément
2.24 / L'élément
2.25 / L'élément
2.26 / L'élément
2.27 / L'élément
2.28 / L'élément
2.29 / L'élément
2.30 / L'élément
2.31 / L'élément
2.32 / L'élément
2.33 / L'élément
2.34 / L'élément
2.35 / L'élément
2.36 / L'élément
2.37 / L'élément
2.38 / L'élément
2.39 / L'élément
2.40 / L'élément
2.41 / L'élément
2.42 / L'élément
all
choice
sequence
complexContent
simpleContent
extension
simpleType
list
union
restriction
enumeration
pattern
totalDigits
fractionDigits
minInclusive
maxInclusive
minExclusive
maxExclusive
minLength
maxlength
length
whiteSpace
key
keyref
unique
selector
field
annotation
appinfo
documentation
Modifié le 10/05/2003
Page 4 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.1 / Les types de données
Les types de données des schémas XML peuvent être soit simples, soit complexes.
Un type complexe signifie qu'un élément peut contenir des attributs, des éléments, voire même
une valeur simple.
Un type simple signifie que le contenu d'un élément ou d'un attribut ne peut être qu'une valeur
d'un type de données prédéfinies comme un nombre entier ou une chaîne de caractères. Ces valeurs
peuvent également être restreintes par l'intermédiaire de facettes.
Les types de données des schémas XML sont représentés par trois parties distinctes : les
espaces de valeurs, les espaces lexicaux et un ensemble de facettes.
un espace de valeur est un ensemble de valeurs possibles pour un type de données spécifié. Le
type de données int accepte les valeurs comprises dans l'intervalle suivant : {-2147483648 2147483647}.
Chaque possibilité dans l'espace de valeur d'un type de données est représentée par un ou
plusieurs littéraux dans son espace lexical.
Un espace lexical est un ensemble de littéraux valides pour un type de données. Les littéraux 9.9
et 9.90 sont différents mais tous les deux valides et égaux pour le type de données float.
Une facette est un aspect définissant un espace de valeur. Ce dernier caractérisé par des
propriétés, peut subir des restrictions par rapport à une liste de valeurs spécifiées, à un intervalle de
valeurs, à un modèle de valeurs, à une longueur de champ, à un nombre de chiffres et à un
comportement vis-à-vis des espaces blancs.
Enumeration
MinInclusive
MaxInclusive
MinExclusive
MaxExclusive
Pattern
Length
MinLength
MaxLength
TotalDigits
FractionDgits
WhiteSpace
Les types de données prédéfinies sont divisés en deux ensembles distincts, les primitifs et les dérivés,
les seconds découlants des premiers. La hiérarchie des types de données prédéfinies est décrite à la
page suivante.
Les types de données primitifs
Type
Description
string
représente une chaîne de caractères.
boolean
représente une valeur booléenne true ou false.
decimal
représente un nombre décimal
float
représente un nombre à virgule flottante.
double
représente un nombre réel double.
duration
représente une durée.
dateTime
représente une valeur date/heure.
Modifié le 10/05/2003
Page 5 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
time
représente une valeur horaire (format : hh:mm:ss.sss ).
date
représente une date (format : CCYY-MM-DD).
gYearMonth
représente un mois et une année grégorienne (format : CCYY-MM).
gYear
représente une année (format : CCYY).
gMonthDay
représente le jour d'un mois (format : MM-DD).
gDay
représente le jour d'un mois (format : DD).
gMonth
représente le mois (format : MM).
hexBinary
représente un contenu binaire hexadécimal.
base64Binary représente un contenu binaire de base 64.
anyURI
représente une adresse URI (ex.: http://www.site.com).
QName
représente un nom qualifié.
NOTATION
représente un nom qualifié.
Les types de données dérivés
Type
Description
normalizedString
représente une chaîne de caractères dont les espaces blancs sont normalisés.
token
représente une chaîne de caractères sans espaces blancs.
language
représente un langage exprimé sous forme de mot clés répondant à la RFC 1766.
NMTOKEN
représente le type d'attribut NMTOKEN de XML 1.0.
NMTOKENS
représente le type d'attributs NMTOKENS de XML 1.0.
Name
représente un nom XML.
NCName
représente un nom non-implanté (non-colonized) dans .
id
représente le type d'attribut ID de XML 1.0.
IDREF
représente le type d'atribut IDREF de XML 1.0.
IDREFS
représente le type d'attribut IDREFS de XML 1.0.
ENTITY
représente le type d'attribut ENTITY de XML 1.0.
ENTITIES
représente le type d'attribut ENTITIES de XML 1.0.
integer
représente un nombre entier.
nonPositiveInteger
représente un nombre entier négatif incluant le zéro.
negativeInteger
représente un nombre entier négatif dont la valeur maximum est -1.
long
représente un nombre entier long dont l'intervalle est {-9223372036854775808 9223372036854775807}.
int
représente un nombre entier dont l'intervalle est {-2147483648 - 2147483647}.
short
représente un nombre entier court dont l'intervalle est {-32768 - 32767}.
byte
représente un entier dont l'intervalle est {-128 - 127}.
nonNegativeInteger représente un nombre entier positif incluant le zéro.
unsignedLong
représente un nombre entier long non-signé dont l'intervalle est {0 -
Modifié le 10/05/2003
Page 6 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
18446744073709551615}.
unsignedInt
représente un nombre entier non-signé dont l'intervalle est {0 - 4294967295}.
unsignedShort
représente un nombre entier court non-signé dont l'intervalle est {0 - 65535}.
unsignedByte
représente un nombre entier non-signé dont l'intervalle est {0 - 255}.
positiveInteger
représente un nombre entier positif commençant à 1.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant>
Une chaîne de caractères est attendue.
</element_enfant>
<element_enfant>
Les chiffres ne sont pas acceptées !
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_enfant">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[^0-9]"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="element_enfant"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Sommaire
2.1.1 / La hiérarchie des types de données prédéfinies
Modifié le 10/05/2003
Page 7 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.1.1 / La hiérarchie des types de données prédéfinies
Modifié le 10/05/2003
Page 8 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.2 / L'élément schema
Un schéma XML commence par l'ouverture d'un élément schema destiné à accueillir la définition
des composants d'un document XML.
<xsd:schema
attributeFormDefault = (qualified | unqualified) : unqualified
blockDefault = (#all | Liste de (extension | restriction | substitution)) : ''
elementFormDefault = (qualified | unqualified) : unqualified
finalDefault = (#all | Liste de (extension | restriction)) : ''
id = ID
targetNamespace = adresse_URI
version = token
xml:lang = language
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : ((include | import | redefine | annotation)*,
(((simpleType | complexType | group | attributeGroup)
| element | attribute | notation), annotation*)*)
</xsd:schema>
L'élément schema possède plusieurs attributs destinés à définir le cadre du schéma XML.
Attributs
Description
attributeFormDefault indique si les attributs XML doivent être qualifiés par un espace de noms.
blockDefault
empêche, par défaut, l'utilisation de types dérivés dans des éléments attendant
le type de base.
elementFormDefault
indique si les éléments XML doivent être qualifiés par un espace de noms.
finalDefault
empêche, par défaut, la dérivation de type par restriction, extension ou les deux.
id
précise un identificateur unique pour le schéma.
targetNamespace
indique un espace de noms cible pour tout élément étranger au vocabulaire de
schéma XML.
version
indique un numéro de version.
xml:lang
indique le langage dans lequel est conçu le document.
L'élément schema ne peut être inclus dans aucun élément.
Exemple
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema.xsd"
xmlns="http://www.site.com/schemaxml/"
targetNamespace="http://www.site.com/schemaxml/">>
...
</xsd:schema>
Modifié le 10/05/2003
Page 9 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.3 / L'élément include
L'élément include permet d'inclure un schéma XML d'un même espace de noms dans un autre
schéma.
<xsd:include
id = ID
schemaLocation = anyURI
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:include>
L'élément include possède plusieurs attributs destinés à l'identifier et à préciser l'adresse du
schéma à inclure.
Attributs
Description
précise un identificateur unique pour l'élément.
id
schemaLocation spécifie une adresse URI pointant vers un schéma XML.
L'élément include ne peut être inclus que dans l'élément suivant :
schema
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<librairie
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<livre isbn="2212110472" categorie="XML">
<titre>Services Web avec XML, SOAP, WSDL, UDDI, ebXML...</titre>
<auteur>Jean-Marie Chauvet</auteur>
<editeur>Eyrolles</editeur>
</livre>
<livre isbn="2100065203" categorie="XML">
<titre>XML - Manuel de Référence</titre>
<auteur>R.Wyke</auteur>
<auteur>S.Rehman</auteur>
<auteur>B.Leupen</auteur>
<editeur>Microsoft Press</editeur>
</livre>
<livre isbn="1928994474" categorie="XML">
<titre>XML.NET Developer's Guide</titre>
<auteur>Collectif</auteur>
<editeur>Syngress</editeur>
</livre>
</librairie>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Fichier : schema.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:include schemaLocation="c:\inclusion.xsd"/>
<xsd:complexType name="type_librairie">
<xsd:sequence>
<xsd:element name="livre" type="type_livre" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="librairie" type="type_librairie"/>
</xsd:schema>
Modifié le 10/05/2003
Page 10 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<?xml version="1.0" encoding="UTF-8"?>
<!-- Fichier : inclusion.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:simpleType name="type_isbn">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{10}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attributeGroup name="groupe_attributs_livre">
<xsd:attribute name="isbn" type="type_isbn" use="required"/>
<xsd:attribute name="categorie" type="xsd:string"/>
</xsd:attributeGroup>
<xsd:group name="groupe_elements_livre">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="auteur" type="xsd:string" maxOccurs="unbounded"/>
<xsd:element name="editeur" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="type_livre">
<xsd:sequence>
<xsd:group ref="groupe_elements_livre"/>
</xsd:sequence>
<xsd:attributeGroup ref="groupe_attributs_livre"/>
</xsd:complexType>
</xsd:schema>
Modifié le 10/05/2003
Page 11 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.4 / L'élément import
L'élément import permet d'importer un schéma XML avec un espace de noms différent dans un
autre schéma.
<xsd:import
id = ID
namespace = anyURI
schemaLocation = anyURI
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:import>
L'élément import possède plusieurs attributs destinés à l'identifier et à préciser les adresses du
schéma à importer et de l''espace de noms.
Attributs
Description
id
précise un identificateur unique pour l'élément.
names
spécifie l'espace de noms du schéma XML.
schemaLocation spécifie une adresse URI pointant vers un schéma XML.
L'élément import ne peut être inclus que dans l'élément suivans :
schema
Exemple [voir]
<?xml version="1.0" encoding="iso-8859-1"?>
<recueil
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<poeme>
<site:titre>Locution des pierrots</site:titre>
<site:strophe>Je ne suis qu'un viveur lunaire
Qui fait des ronds dans le bassin
Et cela, sans autre dessein
Que de devenir légendaire.</site:strophe>
<site:strophe>Retroussant d'un air de défin
Mes manches de Mandarin pâle,
J'arrondis ma bouche et - j'exhale
Des conseils doux de Crucifix</site:strophe>
<site:strophe>Ah! oui, devenir légendaire,
Au seuil des siècles charlatans !
Mais où sont les Lunes d'antan ?
Et que Dieu n'est-il à refaire ?</site:strophe>
<site:auteur>Jules Laforgue</site:auteur>
</poeme>
</recueil>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Fichier : schema.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns="http://www.site.com/schema"
targetNamespace="http://www.site.com/schema"
xmlns:site="http://www.site.com">
<xsd:import
schemaLocation="c:\import.xsd"
namespace="http://www.site.com"/>
<xsd:element name="recueil">
<xsd:complexType>
<xsd:sequence>
Modifié le 10/05/2003
Page 12 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:element name="poeme"
type="site:type_poeme"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Fichier : import.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="strophe" type="xsd:string"/>
<xsd:element name="titre" type="xsd:string"/>
<xsd:complexType name="type_poeme">
<xsd:sequence>
<xsd:element ref="titre"/>
<xsd:element ref="strophe" maxOccurs="unbounded"/>
<xsd:element ref="auteur"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="oeuvre" type="type_poeme"/>
</xsd:schema>
Modifié le 10/05/2003
Page 13 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.5 / L'élément redefine
L'élément redefine permet d'mporter et de redéfinir les déclarations d'un schéma XML pour un
même espace de noms.
<xsd:redefine
id = ID
schemaLocation = anyURI
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation |
(simpleType | complexType
| group | attributeGroup))*
</xsd:redefine>
L'élément redefine possède plusieurs attributs destinés à l'identifier et à préciser le schéma à
importer.
Attributs
id
Description
précise un identificateur unique pour l'élément.
schemaLocation spécifie une adresse URI pointant vers un schéma XML à rédéfinir.
L'élément redefine ne peut être inclus que dans l'élément suivant :
schema
Exemple [voir]
<?xml version="1.0" encoding="iso-8859-1"?>
<recueil
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<poeme>
<ref>1254369785</ref>
<titre>Locution des pierrots</titre>
<strophe>Je ne suis qu'un viveur lunaire
Qui fait des ronds dans le bassin
Et cela, sans autre dessein
Que de devenir légendaire.</strophe>
<strophe>Retroussant d'un air de défin
Mes manches de Mandarin pâle,
J'arrondis ma bouche et - j'exhale
Des conseils doux de Crucifix</strophe>
<strophe>Ah! oui, devenir légendaire,
Au seuil des siècles charlatans !
Mais où sont les Lunes d'antan ?
Et que Dieu n'est-il à refaire ?</strophe>
<auteur>Jules Laforgue</auteur>
</poeme>
</recueil>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Fichier : schema.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:redefine schemaLocation="c:\redefine.xsd">
<xsd:complexType name="type_poeme">
<xsd:complexContent>
<xsd:extension base="type_poeme">
<xsd:sequence>
<xsd:element name="ref" type="xsd:integer"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Modifié le 10/05/2003
Page 14 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:redefine>
<xsd:element name="recueil">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="poeme"
type="type_poeme"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Fichier : redefine.xsd -->
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="auteur" type="xsd:string"/>
<xsd:element name="strophe" type="xsd:string"/>
<xsd:element name="titre" type="xsd:string"/>
<xsd:complexType name="type_poeme">
<xsd:sequence>
<xsd:element ref="titre"/>
<xsd:element ref="strophe" maxOccurs="unbounded"/>
<xsd:element ref="auteur"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="oeuvre" type="type_poeme"/>
</xsd:schema>
Modifié le 10/05/2003
Page 15 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.6 / L'élément element
L'élément element permet de représenter un élément XML dans une définition de schéma.
<xsd:element
abstract = boolean : false
block = (#all | Liste de (substitution | extension | restriction))
default = string
final = (#all | Liste de (extension | restriction))
fixed = string
form = (qualified | unqualified)
id = ID
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
name = NCName
nullable = boolean : false
ref = QName
substitutionGroup = QName
type = QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?,
((simpleType | complexType)?,
(unique | key | keyref)*))
</xsd:element>
L'élément element possède plusieurs attributs destinés à définir précisément l'élément XML.
Attributs
Description
abstract
provoque l'abstraction (true) de l'élément XML, devant être remplacé par un autre
élément.
block
spécifie une valeur de blocage du type dans des éléments attendant le type de
base.
default
précise une valeur par défaut pour l'élément.
final
empêche la dérivation de type par restriction, extension ou les deux.
fixed
empêche une dérivation par restriction du type de l'élément.
form
indique si l'élément XML doit être ou non qualifié par un espace de noms.
id
précise un identificateur unique pour l'élément.
maxOccurs
précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est
égal à 1.
minOccurs
précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est
égal à 1.
name
indique le nom de l'élément XML.
nillable
signifie qu'un élément peut être valide (true) lorsqu'il est nul, s'il est porteur d'un
attribut qualifié d'espace de noms xsd:nil.
ref
spécifie une référence à un autre élément de schéma.
substitutionGroup définit un élément pour lequel l'élément peut se substituer.
fournit le type de données accepté par l'élément.
type
L'élément element ne peut être inclus que dans les éléments suivants :
all
choice
schema
sequence
Modifié le 10/05/2003
Page 16 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant>
Chaîne de caractères
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="element_enfant" type="xsd:string"/>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="element_enfant"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 17 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.7 / L'élément group
L'élément group permet de définir un groupe d'éléments et d'y faire référence dans un schéma
XML.
<xsd:group
id = ID
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
name = NCName
ref = QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation? ,
(all | choice | sequence)?)
</xsd:group>
L'élément group possède plusieurs attributs destinés à définir les caractéristiques du groupe
d'éléments.
Attributs
Description
précise un identificateur unique pour le groupe.
id
maxOccurs précise le nombre d'occurrences maximum du groupe. Par défaut, ce nombre est égal à
1.
minOccurs
précise le nombre d'occurrences minimum du groupe. Par défaut, ce nombre est égal à 1.
name
indique le nom du groupe.
ref
indique une référence à un groupe d'attributs.
L'élément group ne peut être inclus que dans les éléments suivants :
choice
complexType
redefine
schema
sequence
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<librairie
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<livre isbn="2212110472" categorie="XML">
<titre>
Services Web avec XML, SOAP, WSDL, UDDI, ebXML...
</titre>
<auteur>Jean-Marie Chauvet</auteur>
<editeur>Eyrolles</editeur>
</livre>
<livre isbn="2100065203" categorie="XML">
<titre>XML - Manuel de Référence</titre>
<auteur>R.Wyke</auteur>
<auteur>S.Rehman</auteur>
<auteur>B.Leupen</auteur>
<editeur>Microsoft Press</editeur>
</livre>
<livre isbn="1928994474" categorie="XML">
<titre>XML.NET Developer's Guide</titre>
<auteur>Collectif</auteur>
<editeur>Syngress</editeur>
</livre>
</librairie>
Modifié le 10/05/2003
Page 18 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:simpleType name="type_isbn">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{10}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:attributeGroup name="groupe_attributs_livre">
<xsd:attribute name="isbn"
type="type_isbn"
use="required"/>
<xsd:attribute name="categorie" type="xsd:string"/>
</xsd:attributeGroup>
<xsd:group name="groupe_elements_livre">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="auteur"
type="xsd:string"
minOccurs="1"
maxOccurs="unbounded"/>
<xsd:element name="editeur" type="xsd:string"/>
</xsd:sequence>
</xsd:group>
<xsd:complexType name="type_livre">
<xsd:sequence>
<xsd:group ref="groupe_elements_livre"/>
</xsd:sequence>
<xsd:attributeGroup ref="groupe_attributs_livre"/>
</xsd:complexType>
<xsd:complexType name="type_librairie">
<xsd:sequence>
<xsd:element name="livre"
type="type_livre"
minOccurs="1"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="librairie" type="type_librairie"/>
</xsd:schema>
Modifié le 10/05/2003
Page 19 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.8 / L'élément any
L'élément any représente n'importe quel élément dans un schéma XML.
<xsd:any
id = ID
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
namespace = ((##any | ##other)
| Liste de (anyURI | (##targetNamespace | ##local)) )
: ##any
processContents = (lax | skip | strict) : strict
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:any>
L'élément any possède plusieurs attributs destinés à définir précisément l'élément XML.
Attributs
Description
id
précise un identificateur unique pour l'élément.
maxOccurs
précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est
égal à 1.
minOccurs
précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est
égal à 1.
namespace
spécifie un ou plusieurs espaces de noms.
processContents précise le type de processus de contenu.
L'élément any ne peut être inclus que dans les éléments suivants :
choice
sequence
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut="valeur"/>
<element_enfant attribut="valeur">
<autre_element attribut="valeur"/>
</element_enfant>
<element_enfant attribut="valeur">
<un_autre_element/>
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="autre_elementType">
<xsd:attribute name="attribut" type="xs:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="type_enfant">
<xsd:sequence>
<xsd:any minOccurs="0" processContents="lax"/>
</xsd:sequence>
<xsd:attribute name="attribut" type="xs:string" use="required"/>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
Modifié le 10/05/2003
Page 20 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
type="type_enfant"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 21 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.9 / L'élément attribute
L'élément attribute permet de représenter un attribut XML dans une définition de schéma.
<xsd:attribute
default = string
fixed = string
form = (qualified | unqualified)
id = ID
name = NCName
ref = QName
type = QName
use = (optional | prohibited | required) : optional
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (simpleType?))
</xsd:attribute>
L'élément attribute possède plusieurs attributs destinés à définir précisément l'attribut d'un
élément XML.
Attributs
Description
précise une valeur par défaut pour l'attribut.
fixed
empêche une dérivation par restriction du type de
l'attribut.
form
indique si l'attribut XML doit être ou non qualifié par un
espace de noms.
id
précise un identificateur unique pour l'attribut.
name
indique le nom de l'attribut XML.
ref
spécifie une référence à un autre élément de schéma.
type
fournit le type de données accepté par l'attribut.
use
indique comment l'attribut doit apparaître.
L'élément attribute ne peut être inclus que dans les éléments suivants :
attributeGroup
complexType
extension
schema
Exemple [voir]
<?xml version="1.0"?>
<element_racine attribut_racine="valeur"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut_enfant="valeur">
Chaîne de caractères
</element_enfant>
</element_racine>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
elementFormDefault="qualified">
<xsd:complexType name="type_element_enfant">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="attribut_enfant"
type="xsd:string" use="required"/>
</xsd:extension>
Modifié le 10/05/2003
Page 22 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="type_element_enfant"/>
</xsd:sequence>
<xsd:attribute name="attribut_racine"
type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 23 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.10 / L'élément attributeGroup
L'élément attributeGroup permet de regrouper la définition de plusieurs attributs XML.
<xsd:attributeGroup
id = ID
name = NCName
ref = QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:attributeGroup>
L'élément attributeGroup possède deux attributs destinés à identifier l'élément et à se référer à
un groupe d'attributs XML.
Attributs
Description
id
précise un identificateur unique pour l'élément.
name
indique le nom du groupe.
ref
indique une référence à un groupe d'attributs.
L'élément attributeGroup ne peut être inclus que dans les éléments suivants :
attributeGroup
complexType
extension
redefine
schema
Exemple [voir]
<?xml version="1.0"?>
<element_racine attribut_racine="valeur"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut_1="valeur"/
attribut_2="valeur"
attribut_3="valeur">
</element_racine>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
elementFormDefault="qualified">
<xsd:attributeGroup name="Groupe_Attribut">
<xsd:attribute name="attribut_1"
type="xsd:string" use="required"/>
<xsd:attribute name="attribut_2"
type="xsd:string" use="required"/>
<xsd:attribute name="attribut_3"
type="xsd:string" use="required"/>
</xsd:attributeGroup>
<xsd:complexType name="type_element_enfant">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attributeGroup ref="Groupe_Attribut"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="type_element_enfant"/>
Modifié le 10/05/2003
Page 24 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:sequence>
<xsd:attribute name="attribut_racine"
type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 25 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.11 / L'élément anyAttribute
L'élément anyAttribute représente n'importe quel attribut dans un schéma XML.
<xsd:anyAttribute
id = ID
namespace = ((##any | ##other)
| Liste de (anyURI
| (##targetNamespace | ##local)) )
: ##any
processContents = (lax | skip | strict) : strict
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:anyAttribute>
L'élément anyAttribute possède plusieurs attributs destinés à définir précisément l'attribut XML.
Attributs
Description
id
précise un identificateur unique pour l'élément.
namespace
spécifie un ou plusieurs espaces de noms.
processContents précise le type de processus de contenu.
L'élément anyAttribute ne peut être inclus que dans les éléments suivants :
attributeGroup
complexType
extension
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut="valeur" attribut_2="valeur"/>
<element_enfant attribut="valeur"/>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="type_enfant">
<xsd:attribute name="attribut" type="xs:string" use="required"/>
<xsd:anyAttribute processContents="lax"/>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="type_enfant"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 26 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.12 / L'élément complexType
L'élément complexType définit un type de données complexe pour des éléments XML.
<xsd:complexType
abstract = booléen : false
block = (#all | Liste de (extension | restriction))
final = (#all | Liste de (extension | restriction))
id = ID
mixed = booléen : false
name = NCName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (simpleContent | complexContent |
((group | all | choice | séquence)?,
((attribute | attributeGroup)*, anyAttribute?))))
</xsd:complexType>
L'élément complexType possède plusieurs attributs destinés à définir les caractéristiques du
type de données complexe.
Attributs
Description
abstract provoque l'abstraction (true) de l'élément XML, devant être remplacé par un autre élément.
block
spécifie une valeur de blocage du type dans des éléments attendant le type de base.
default
précise une valeur par défaut pour l'élément.
final
empêche la dérivation de type par restriction, extension ou les deux.
id
précise un identificateur unique pour l'élément.
mixed
indique un contenu mixte (true) ou un contenu à base d'éléments seuls (false) par défaut.
name
indique le nom de l'élément XML.
L'élément complexType ne peut être inclus que dans les éléments suivants :
element
redefine
schema
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
attribut_racine="valeur"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut_enfant="valeur">
10 000 000 euros
</element_enfant>
<element_enfant
attribut_enfant="valeur"
snd_attribut_enfant="valeur">
<element_petit_enfant attribut_petit_enfant="valeur"/>
Chaîne de caractères...
</element_enfant>
<![CDATA[<p>Un texte...</p>]]>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="element_enfantType" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
Modifié le 10/05/2003
Page 27 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:element name="element_petit_enfant"
type="element_petit_enfantType"/>
</xsd:choice>
<xsd:attribute name="attribut_enfant"
type="xsd:string" use="required"/>
<xsd:attribute name="snd_attribut_enfant"
type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="element_petit_enfantType">
<xsd:attribute name="attribut_petit_enfant"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element name="element_enfant"
type="element_enfantType"/>
</xsd:choice>
<xsd:attribute name="attribut_racine"
type="xsd:string"
use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 28 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.13 / L'élément all
L'élément all permet de spécifier, dans un type de données complexe, un à plusieurs éléments
devant apparaître une fois ou pas du tout et dans un ordre quelconque.
<xsd:all
id = ID
maxOccurs = 1 : 1
minOccurs = (0 | 1) : 1
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, element*)
</xsd:all>
L'élément all possède plusieurs attributs destinés à définir ce connecteur.
Attributs
Description
précise un identificateur unique pour l'élément.
id
maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à
1.
minOccurs
précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à
1.
L'élément all ne peut être inclus que dans les éléments suivants :
complexType
group
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="F:\Untitled2.xsd">
<element_enfant id="01">
<element_3>1000</element_3>
<element_2>100</element_2>
<element_1>10</element_1>
</element_enfant>
<element_enfant id="02">
<element_1>100</element_1>
<element_3>10000</element_3>
<element_2>1000</element_2>
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="element_enfantType">
<xsd:all minOccurs="0" maxOccurs="1">
<xsd:element name="element_1" type="xsd:integer"/>
<xsd:element name="element_2" type="xsd:integer"/>
<xsd:element name="element_3" type="xsd:integer"/>
</xsd:all>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="01"/>
<xsd:enumeration value="02"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
Modifié le 10/05/2003
Page 29 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="element_enfantType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 30 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.14 / L'élément choice
L'élément choice propose une structure de choix entre plusieurs éléments possible.
<xsd:choice
id = ID
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (element | group | choice | séquence | any)*)
</xsd:choice>
L'élément choice possède plusieurs attributs destinés à définir le connecteur de choix.
Attributs
Description
précise un identificateur unique pour l'élément.
id
maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à
1.
minOccurs
précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à
1.
L'élément choice ne peut être inclus que dans les éléments suivants :
choice
complexType
group
sequence
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant id="02">
<element_choix_1>10</element_choix_1>
</element_enfant>
<element_enfant id="01">
<element_choix_2>10</element_choix_2>
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_choix_1" type="xsd:integer"/>
<xsd:element name="element_choix_2" type="xsd:integer"/>
<xsd:complexType name="element_enfantType">
<xsd:choice>
<xsd:element ref="element_choix_1"/>
<xsd:element ref="element_choix_2"/>
</xsd:choice>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="01"/>
<xsd:enumeration value="02"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
Modifié le 10/05/2003
Page 31 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:sequence>
<xsd:element name="element_enfant"
type="element_enfantType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 32 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.15 / L'élément sequence
L'élément sequence définit, dans un type de données complexe, un à plusieurs éléments devant
obligatoirement apparaître dans un ordre prédéfini.
<xsd:sequence
id = ID
maxOccurs = (nonNegativeInteger | unbounded) : 1
minOccurs = nonNegativeInteger : 1
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?,
(element | group | choice | séquence | any)*)
</xsd:sequence>
L'élément sequence possède plusieurs attributs destinés à définir le connecteur de séquence.
Attributs
Description
précise un identificateur unique pour l'élément.
id
maxOccurs précise le nombre d'occurrences maximum de l'élément. Par défaut, ce nombre est égal à
1.
minOccurs
précise le nombre d'occurrences minimum de l'élément. Par défaut, ce nombre est égal à
1.
L'élément sequence ne peut être inclus que dans les éléments suivants :
choice
complexType
group
sequence
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant id="01">
<element_1>10</element_1>
<element_2>1000000</element_2>
<element_3>1</element_3>
</element_enfant>
<element_enfant id="02">
<element_1>100</element_1>
<element_2>100000</element_2>
<element_3>10000</element_3>
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_1" type="xsd:integer"/>
<xsd:element name="element_2" type="xsd:integer"/>
<xsd:element name="element_3" type="xsd:integer"/>
<xsd:complexType name="element_enfantType">
<xsd:sequence>
<xsd:element ref="element_1"/>
<xsd:element ref="element_2"/>
<xsd:element ref="element_3"/>
</xsd:sequence>
<xsd:attribute name="id" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
Modifié le 10/05/2003
Page 33 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:enumeration value="01"/>
<xsd:enumeration value="02"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="element_enfantType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 34 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.16 / L'élément complexContent
L'élément complexContent permet de définir un contenu complexe pour un élément XML.
<xsd:complexContent
id = ID
mixed = booléen
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (restriction | extension))
</xsd:complexContent>
L'élément simpleContent possède deux attributs définissant le contenu complexe.
Attributs
Description
id
précise un identificateur unique pour l'élément.
mixed
indique un contenu mixte (true) ou un contenu à base d'éléments seuls (false) par défaut.
L'élément complexContent ne peut être inclus que dans l'élément suivant :
complexType
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<personne xsi:type="type_francaise">
<nom>FRAGIL</nom>
<prenom>Antoine</prenom>
<adresse>10 rue des Anges</adresse>
<code_postal>77200</code_postal>
<ville>Torcy</ville>
</personne>
<personne xsi:type="type_autre">
<nom>FARUGGI</nom>
<prenom>Marco</prenom>
<adresse>Via G.B. Vico, 33</adresse>
<code_postal>00144</code_postal>
<ville>Roma</ville>
<pays>Italia</pays>
</personne>
<personne xsi:type="type_francaise">
<nom>LEGER</nom>
<prenom>Bruno</prenom>
<adresse>22 rue des Poissonniers</adresse>
<code_postal>75000</code_postal>
<ville>Paris</ville>
</personne>
</element_racine>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="type_personne" block="restriction">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="prenom" type="xsd:string"/>
<xsd:element name="adresse" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="type_francaise">
<xsd:complexContent>
<xsd:extension base="type_personne">
Modifié le 10/05/2003
Page 35 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:sequence>
<xsd:element name="code_postal"
type="xsd:positiveInteger"/>
<xsd:element name="ville" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="type_autre">
<xsd:complexContent>
<xsd:extension base="type_personne">
<xsd:sequence>
<xsd:element name="code_postal"
type="xsd:positiveInteger"/>
<xsd:element name="ville" type="xsd:string"/>
<xsd:element name="pays" type="xsd:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="personne"
type="type_personne"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 36 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.17 / L'élément simpleContent
L'élément simpleContent permet de créer un type de données complexe à partir d'un type de
données simple.
<xsd:simpleContent
id = ID
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (restriction | extension))
</xsd:simpleContent>
L'élément simpleContent un seul attribut destiné à l'identifier.
Attributs
id
Description
précise un identificateur unique pour l'élément.
L'élément simpleContent ne peut être inclus que dans les éléments suivants :
complexType
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant>
<element attribut="valeur">chaîne...</element_1>
</element_enfant>
<element_enfant>
<element attribut="valeur">chaîne...</element_1>
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="type_element">
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="attribut" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="type_element_enfant">
<xsd:sequence>
<xsd:element name="element" type="type_element"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="type_element_enfant"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 37 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.18 / L'élément extension
L'élément extension propose d'étendre la définition d'un élément ou d'un attribut XML à un autre
type de données spécifié.
<xsd:extension
base = QName
id = ID
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?,
((group | all | choice | séquence)?,
((attribute | attributeGroup)*, anyAttribute?)))
</xsd:extension>
L'élément extension possède deux attributs définissant la structure extensive.
Attributs
Description
base
indique un type de données de base.
id
précise un identificateur unique pour l'élément.
L'élément extension ne peut être inclus que dans les éléments suivants :
complexContent
simpleContent
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<donation monnaie="$US">50</donation>
<donation monnaie="$US">90</donation>
<donation monnaie="euros">80</donation>
<donation monnaie="euros">312</donation>
<donation monnaie="$US">500</donation>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="donation"
type="type_donation"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="type_donation">
<xsd:simpleContent>
<xsd:extension base="niveau_don">
<xsd:attribute name="monnaie"
type="xsd:string"
use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="niveau_don">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="49"/>
Modifié le 10/05/2003
Page 38 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:maxExclusive value="501"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Modifié le 10/05/2003
Page 39 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.19 / L'élément simpleType
L'élément simpleType définit un type de données simple pour des éléments XML.
<xsd:simpleType
final = (#all | (list | union | restriction))
id = ID
name = NCName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (restriction | list | union))
</xsd:simpleType>
L'élément complexType possède plusieurs attributs destinés à définir les caractéristiques du
type de données simple.
Attributs
Description
final
empêche la dérivation de type par restriction, extension ou les deux.
id
précise un identificateur unique pour l'élément.
name
indique le nom de l'élément XML.
L'élément simpleType ne peut être inclus que dans les éléments suivants :
attribute
element
list
redefine
restriction
schema
union
Exemple [voir]
<?xml version="1.0"?>
<element_racine attribut="23 0 12 5 9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="F:\Untitled4.xsd">
<element_enfant>10.31481</element_enfant>
</element_racine>
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="nombre_decimal">
<xsd:restriction base="xsd:decimal">
<xsd:minExclusive value="0"/>
<xsd:fractionDigits value="5"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="liste">
<xsd:list itemType="xsd:integer"/>
</xsd:simpleType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="nombre_decimal"/>
</xsd:sequence>
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="liste">
<xsd:length value="5"/>
Modifié le 10/05/2003
Page 40 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 41 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.20 / L'élément list
L'élément list permet de créer de nouveaux types de listes par dérivation de types de données
atomiques existants.
<xsd:list
id = ID
itemType = QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (simpleType?))
</xsd:list>
L'élément list possède plusieurs attributs destinés à l'identifier et à préciser un type de données.
Attributs
id
Description
précise un identificateur unique pour l'élément.
itemType spécifie le nom d'un type de données existants.
L'élément list ne peut être inclus que dans l'élément suivant :
simpleType
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<note_devoir>
15 16 18 19 18 19
</note_devoir>
<note_devoir>
9 12 11 14 8 15
</note_devoir>
</element_racine>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:simpleType name="note_chiffree">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="20"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="type_note">
<xsd:list itemType="note_chiffree"/>
</xsd:simpleType>
<xsd:complexType name="type_element_racine">
<xsd:sequence>
<xsd:element name="note_devoir"
type="type_note"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="element_racine"
type="type_element_racine"/>
</xsd:schema>
Modifié le 10/05/2003
Page 42 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.21 / L'élément union
L'élément union permet à un élément ou à un attribut XML d'être une ou plusieurs instances d'un
type de données formé par la réunion de plusieurs types atomiques ou listes.
<xsd:union
id = ID
memberTypes = Liste de QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (simpleType*))
</xsd:union>
L'élément union possède plusieurs attributs destinés à l'identifier et à préciser des types de
données.
Attributs
id
Description
précise un identificateur unique pour l'élément.
memberTypes spécifie une liste de noms de types de données séparés par un espace blanc.
L'élément union ne peut être inclus que dans l'élément suivant :
simpleType
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<note_devoir>11</note_devoir>
<note_devoir>AB</note_devoir>
</element_racine>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xsd:simpleType name="note_chiffree">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="20"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="type_note">
<xsd:union memberTypes="xsd:string note_chiffree"/>
</xsd:simpleType>
<xsd:complexType name="type_element_racine">
<xsd:sequence>
<xsd:element name="note_devoir"
type="type_note"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="element_racine"
type="type_element_racine"/>
</xsd:schema>
Modifié le 10/05/2003
Page 43 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.22 / L'élément restriction
L'élément restriction permet de restreindre les données permises dans un élément ou un attribut
XML.
<xsd:restriction
base = QName
id = ID
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?,
(group | all | choice | séquence)?,
((attribute | attributeGroup)*, anyAttribute?))
</xsd:restriction>
L'élément restriction possède deux attributs définissant la structure restrictive.
Attributs
Description
base
indique un type de données de base.
id
précise un identificateur unique pour l'élément.
L'élément restriction ne peut être inclus que dans les éléments suivants :
complexContent
simpleContent
simpleType
Exemple [voir]
<?xml version="1.0"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<nombre>51</nombre>
<nombre>90</nombre>
<nombre>80</nombre>
<nombre>99</nombre>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="entre50et100">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="50"/>
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="nombre" type="entre50et100"/>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="nombre" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 44 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.23 / L'élément enumeration
L'élément enumeration permet de contraindre la valeur d'un élément ou d'un attribut à une seule
possibilité.
<xsd:enumeration
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:enumeration>
L'élément enumeration possède plusieurs attributs destinés à identifier la facette et à préciser
une valeur possible.
Attributs
Description
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément enumeration ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant attribut="Veuf">
Monsieur
</element_enfant>
<element_enfant attribut="Mariée">
Madame
</element_enfant>
<element_enfant attribut="Célibataire">
Mademoiselle
</element_enfant>
<element_enfant attribut="Concubin">
Monsieur
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:complexType name="type_enfant">
<xsd:simpleContent>
<xsd:extension base="valeurs_enfant">
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:NMTOKEN">
<xsd:enumeration value="Célibataire"/>
<xsd:enumeration value="Concubin"/>
<xsd:enumeration value="Concubine"/>
<xsd:enumeration value="Marié"/>
<xsd:enumeration value="Mariée"/>
<xsd:enumeration value="Veuf"/>
<xsd:enumeration value="Veuve"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
Modifié le 10/05/2003
Page 45 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:complexType>
<xsd:simpleType name="valeurs_enfant">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Madame"/>
<xsd:enumeration value="Mademoiselle"/>
<xsd:enumeration value="Monsieur"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="element_enfant"
type="type_enfant"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 46 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.24 / L'élément pattern
L'élément pattern permet de créer un modèle pour la valeur d'une élément ou d'un attribut XML à
partir d'une expression régulière.
<xsd:pattern
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:pattern>
L'élément pattern possède plusieurs attributs destinés à identifier la facette et à préciser une
expression régulière.
Attributs
Description
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément pattern ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<element_enfant>[email protected]</element_enfant>
<element_enfant>[email protected]</element_enfant>
<element_enfant>[email protected]</element_enfant>
<element_enfant>[email protected]</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_enfant">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="(.)+@(.)+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="element_enfant" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 47 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.25 / L'élément totalDigits
L'élément totalDigits permet de définir le nombre total de chiffres dans un élément ou un attribut
XML.
<xsd:totalDigits
fixed = boolean : false
id = ID
value = positiveInteger
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:totalDigits>
L'élément totalDigits possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le
comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie un nombre total de chiffres.
L'élément totalDigits ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<produit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<prix>10.25</prix>
<prix>1010.55</prix>
<prix>99.50</prix>
<prix>23.45</prix>
<prix>250.00</prix>
<prix>9999.99</prix>
</produit>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="type_prix">
<xsd:restriction base="xsd:float">
<xsd:totalDigits value="6"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="produit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prix" type="type_prix" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 48 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.26 / L'élément fractionDigits
L'élément fractionDigits permet de définir le nombre total de chiffres dans la partie fractionnaire
d'un nombre à virgule flottante.
<xsd:fractionDigits
fixed = boolean : false
id = ID
value = nonNegativeInteger
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:fractionDigits>
L'élément fractionDigits possède plusieurs attributs destinés à l'identifier, à préciser une valeur
et le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une longueur en caractères ou en octets.
L'élément fractionDigits ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<produit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<prix>10.25</prix>
<prix>1010.55</prix>
<prix>99.50</prix>
<prix>23.45</prix>
<prix>250.00</prix>
<prix>9999.99</prix>
</produit>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="type_prix">
<xsd:restriction base="xsd:float">
<xsd:totalDigits value="6"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="produit">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prix" type="type_prix" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 49 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.27 / L'élément minInclusive
L'élément minInclusive permet de définir une valeur minimum inclusive pour l'élément ou
l'attribut XML.
<xsd:minInclusive
fixed = booléen : false
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:minInclusive>
L'élément minInclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur et
le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément minInclusive ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<valeur attribut="200">0</valeur>
<valeur attribut="170">19</valeur>
<valeur attribut="100">100</valeur>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="valeur"
type="valeurType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="valeurType">
<xsd:simpleContent>
<xsd:extension base="valeurSimpleType">
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="100"/>
<xsd:maxInclusive value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Modifié le 10/05/2003
Page 50 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:simpleType name="valeurSimpleType">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Modifié le 10/05/2003
Page 51 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.28 / L'élément maxInclusive
L'élément maxInclusive permet de définir une valeur maximum inclusive pour l'élément ou
l'attribut XML.
<xsd:maxInclusive
fixed = booléen : false
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:maxInclusive>
L'élément maxInclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur
et le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément maxInclusive ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<valeur attribut="200">0</valeur>
<valeur attribut="170">19</valeur>
<valeur attribut="100">100</valeur>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="valeur"
type="valeurType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="valeurType">
<xsd:simpleContent>
<xsd:extension base="valeurSimpleType">
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="100"/>
<xsd:maxInclusive value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Modifié le 10/05/2003
Page 52 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:simpleType name="valeurSimpleType">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Modifié le 10/05/2003
Page 53 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.29 / L'élément minExclusive
L'élément minExclusive permet de définir une valeur maximum exclusive pour l'élément ou
l'attribut XML.
<xsd:minExclusive
fixed = booléen : false
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:minExclusive>
L'élément minExclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur
et le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément minExclusive ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<valeur attribut="199">1</valeur>
<valeur attribut="170">19</valeur>
<valeur attribut="99">99</valeur>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="valeur"
type="valeurType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="valeurType">
<xsd:simpleContent>
<xsd:extension base="valeurSimpleType">
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="100"/>
<xsd:maxExclusive value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Modifié le 10/05/2003
Page 54 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:simpleType name="valeurSimpleType">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="0"/>
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Modifié le 10/05/2003
Page 55 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.30 / L'élément maxExclusive
L'élément maxExclusive permet de définir une valeur maximum pour l'élément ou l'attribut XML.
<xsd:maxExclusive
fixed = booléen : false
id = ID
value = simpleType
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:maxExclusive>
L'élément maxExclusive possède plusieurs attributs destinés à l'identifier, à préciser une valeur
et le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une valeur de type simple (simpleType).
L'élément maxExclusive ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<valeur attribut="199">1</valeur>
<valeur attribut="170">19</valeur>
<valeur attribut="99">99</valeur>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="valeur"
type="valeurType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="valeurType">
<xsd:simpleContent>
<xsd:extension base="valeurSimpleType">
<xsd:attribute name="attribut" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="100"/>
<xsd:maxExclusive value="200"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Modifié le 10/05/2003
Page 56 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:simpleType name="valeurSimpleType">
<xsd:restriction base="xsd:nonNegativeInteger">
<xsd:minExclusive value="0"/>
<xsd:maxExclusive value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Modifié le 10/05/2003
Page 57 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.31 / L'élément minLength
L'élément minLength permet de définir une longueur minimum pour l'élément ou l'attribut XML.
<xsd:minLength
fixed = booléen : false
id = ID
value = nonNegativeInteger
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:minLength>
L'élément minLength possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le
comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une longueur maximum.
L'élément minLength ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<adresse ref_site="1201203609">
http://xmlfr.org/documentations/tutoriels/001219-0001#maxlength
</adresse>
<adresse ref_site="3269135683">
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#rf-maxlength
</adresse>
<adresse ref_site="2180877944">
http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=8
</adresse>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="adresse_uri">
<xsd:restriction base="xsd:anyURI">
<xsd:minLength value="15"/>
<xsd:maxlength value="255"/>"
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="adresseType">
<xsd:simpleContent>
<xsd:extension base="adresse_uri">
<xsd:attribute name="ref_site" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="10" fixed="true"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
Modifié le 10/05/2003
Page 58 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="adresse"
type="adresseType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 59 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.32 / L'élément maxlength
L'élément maxlength permet de définir une longueur maximum pour l'élément ou l'attribut XML.
<xsd:maxlength
fixed = booléen : false
id = ID
value = nonNegativeInteger
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:maxlength>
L'élément maxlength possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le
comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une longueur maximum.
L'élément maxlength ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<adresse ref_site="1201203609">
http://xmlfr.org/documentations/tutoriels/001219-0001#maxlength
</adresse>
<adresse ref_site="3269135683">
http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#rf-maxlength
</adresse>
<adresse ref_site="2180877944">
http://www.xml.com/pub/a/2000/11/29/schemas/part1.html?page=8
</adresse>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="adresse_uri">
<xsd:restriction base="xsd:anyURI">
<xsd:minLength value="15"/>
<xsd:maxlength value="255"/>"
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="adresseType">
<xsd:simpleContent>
<xsd:extension base="adresse_uri">
<xsd:attribute name="ref_site" use="required">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="10" fixed="true"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleContent>
Modifié le 10/05/2003
Page 60 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:complexType>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="adresse"
type="adresseType"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 61 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.33 / L'élément length
L'élément length permet de définir une longueur pour l'élément ou l'attribut XML.
<xsd:length
fixed = booléen : false
id = ID
value = nonNegativeInteger
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:length>
L'élément length possède plusieurs attributs destinés à l'identifier, à préciser une valeur et le
comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie une longueur en caractères ou en octets.
L'élément length ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<appreciation ref_eleve="TA120360">
Elève très studieux méritant d'entrée
en faculté de Lettres
</appreciation>
<appreciation ref_eleve="TB213568">
Bon élève devant être plus attentionné
pour obtenir de bien meilleur résultat
</appreciation>
<appreciation ref_eleve="SA218877">
Très bon élève méritant de passer
en terminal scientifique
</appreciation>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="element_racine">
<xs:complexType>
<xs:sequence>
<xs:element name="appreciation"
type="type_appreciation"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="type_appreciation">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="ref_eleve" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
Modifié le 10/05/2003
Page 62 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xs:length value="8" fixed="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
Modifié le 10/05/2003
Page 63 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.34 / L'élément whiteSpace
L'élément whiteSpace permet de définir le comportement à adopter vis-à-vis des espaces blancs
dans une valeur de chaîne de caractères.
<xsd:whiteSpace
fixed = booléen : false
id = ID
value = (collapse | preserve | replace)
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:whiteSpace>
L'élément whiteSpace possède plusieurs attributs destinés à l'identifier, à préciser une valeur et
le comportement de cette dernière.
Attributs
Description
fixed
permet de fixer la valeur de l'élément.
id
précise un identificateur unique pour l'élément.
value
spécifie un comportement à appliquer aux espaces blancs dans une chaîne de caractères.
L'élément whiteSpace ne peut être inclus que dans l'élément suivant :
restriction
Exemple [voir]
<?xml version="1.0" encoding="iso-8859-1"?>
<poesie
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<titre>Locution des pierrots</titre>
<texte>Je ne suis qu'un viveur lunaire
Qui fait des ronds dans le bassin
Et cela, sans autre dessein
Que de devenir légendaire.
Retroussant d'un air de défin
Mes manches de Mandarin pâle,
J'arrondis ma bouche et - j'exhale
Des conseils doux de Crucifix
Ah! oui, devenir légendaire,
Au seuil des siècles charlatans !
Mais où sont les Lunes d'antan ?
Et que Dieu n'est-il à refaire ?</texte>
<auteur>Jules Laforgue</auteur>
</poesie>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:simpleType name="type_texte">
<xsd:restriction base="xsd:string">
<xsd:whiteSpace value="preserve"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="poesie">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="texte" type="type_texte"/>
Modifié le 10/05/2003
Page 64 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<xsd:element name="auteur" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 65 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.35 / L'élément key
L'élément key permet de définir un élément clé dans une structure XML.
<xsd:key
id = ID
name = NCName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (selector, field+))
</xsd:key>
L'élément key possède plusieurs attributs destinés à l'identifier et à préciser son nom.
Attributs
Description
id
précise un identificateur unique pour l'élément.
name
spécifie un nom pour l'élément.
L'élément key ne peut être inclus que dans l'élément suivant :
element
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
<cle_site>1</cle_site>
</page>
<site numero="1">
<nom>W3C</nom>
Modifié le 10/05/2003
Page 66 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema>
Modifié le 10/05/2003
Page 67 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.36 / L'élément keyref
L'élément keyref permet de créer une référence à une clé existante dans le schéma XML.
<xsd:keyref
id = ID
name = NCName
refer = QName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (selector, field+))
</xsd:keyref>
L'élément keyref possède plusieurs attributs destinés à définir la clé référencée.
Attributs
Description
id
précise un identificateur unique pour l'élément.
name
spécifie un nom pour l'élément.
refer
se référe à un élément key existant.
L'élément keyref ne peut être inclus que dans l'élément suivant :
element
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
<cle_site>1</cle_site>
Modifié le 10/05/2003
Page 68 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</page>
<site numero="1">
<nom>W3C</nom>
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema>
Modifié le 10/05/2003
Page 69 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.37 / L'élément unique
L'élément unique permet de définir une contrainte d'unicité sur un noeud d'une arborescence
XML.
<xsd:unique
id = ID
name = NCName
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?, (selector, field+))
</xsd:unique>
L'élément unique possède plusieurs attributs destinés à l'identifier et à préciser son nom.
Attributs
Description
id
précise un identificateur unique pour l'élément.
name
spécifie un nom pour l'élément.
L'élément unique ne peut être inclus que dans les éléments suivants :
element
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
<cle_site>1</cle_site>
</page>
<site numero="1">
Modifié le 10/05/2003
Page 70 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<nom>W3C</nom>
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema>
Modifié le 10/05/2003
Page 71 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.38 / L'élément selector
L'élément selector permet de définir une expression XPath chargée de sélectionner un élément
XML afin de lui appliquer une clé.
<xsd:selector
id = ID
xpath = {sous-ensemble d'expressions XPath}
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:selector>
L'élément selector possède plusieurs attributs destinés à identifier le champ et à préciser une
expression XPath.
Attributs
Description
id
précise un identificateur unique pour l'élément.
xpath
spécifie un sous-ensemble d'expressions XPath.
L'élément selector ne peut être inclus que dans les éléments suivants :
key
keyref
unique
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
Modifié le 10/05/2003
Page 72 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<cle_site>1</cle_site>
</page>
<site numero="1">
<nom>W3C</nom>
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema>
Modifié le 10/05/2003
Page 73 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.39 / L'élément field
L'élément field permet de sélectionner par l'intermédiaire d'une expression XPath , des éléments
ou des attributs destinés à être utilisés comme clé.
<xsd:field
id = ID
xpath = {sous-ensemble d'expressions XPath}
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (annotation?)
</xsd:field>
L'élément field possède plusieurs attributs destinés à identifier le champ et à préciser une
expression XPath.
Attributs
Description
id
précise un identificateur unique pour l'élément.
xpath
spécifie un sous-ensemble d'expressions XPath.
L'élément field ne peut être inclus que dans les éléments suivants :
key
keyref
unique
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<site:annuaire
xmlns:site="http://www.site.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.site.com c:\schema.xsd">
<page numero="1" langue="US">
<titre>XML Schema</titre>
<lien>http://www.w3.org/XML/Schema/</lien>
<commentaire>
XML Schemas express shared vocabularies and allow machines
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="2" langue="FR">
<titre>XML Schema tome 0 : Introduction</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-0/</lien>
<commentaire>
Le tome 0 de la spécification XML Schema n'est qu'une introduction
...
</commentaire>
<cle_site>1</cle_site>
</page>
<page numero="3" langue="FR">
<titre>XML Schema tome 1 : Structures</titre>
<lien>http://xmlfr.org/w3c/TR/xmlschema-1/</lien>
<commentaire>
XML Schema tome 1 : Structures est la spécification du langage
...
</commentaire>
<cle_site>2</cle_site>
</page>
<page numero="4" langue="US">
<titre>XML Schema Part 2: Datatypes</titre>
<lien>http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/</lien>
<commentaire>
XML Schema: Datatypes is part 2 of the specification of the XML
...
Modifié le 10/05/2003
Page 74 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<cle_site>1</cle_site>
</page>
<site numero="1">
<nom>W3C</nom>
<url>http://www.w3.org/</url>
</site>
<site numero="2">
<nom>XMLfr</nom>
<url>http://www.xmlfr.org/</url>
</site>
</site:annuaire>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.site.com"
targetNamespace="http://www.site.com">
<xsd:complexType name="type_page">
<xsd:sequence>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="lien" type="xsd:string"/>
<xsd:element name="commentaire" type="xsd:string"/>
<xsd:element name="cle_site"
type="xsd:positiveInteger"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
<xsd:attribute name="langue"
type="xsd:string"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_site">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string"/>
<xsd:element name="url" type="xsd:string"/>
</xsd:sequence>
<xsd:attribute name="numero"
type="xsd:positiveInteger"
use="required"/>
</xsd:complexType>
<xsd:complexType name="type_annuaire">
<xsd:sequence>
<xsd:element name="page"
maxOccurs="unbounded"
type="type_page">
<xsd:unique name="cle_page">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./@numero"/>
</xsd:unique>
</xsd:element>
<xsd:element name="site"
maxOccurs="unbounded"
type="type_site">
<xsd:key name="num_site">
<xsd:selector xpath=".//site"/>
<xsd:field xpath="./@numero"/>
</xsd:key>
<xsd:keyref name="cle_site" refer="num_site">
<xsd:selector xpath=".//page"/>
<xsd:field xpath="./cle_site"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="annuaire" type="type_annuaire"/>
</xsd:schema>
Modifié le 10/05/2003
Page 75 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.40 / L'élément annotation
L'élément annotation propose une structure permttant de fournir des informations applicatives
ou destinées à l'utilisateur dans un schéma.
<xsd:annotation
id = ID
{tout attribut ayant un espace de noms
différent de celui du schéma...}>
Contenu : (appinfo | documentation)*
</xsd:annotation>
L'élément annotation possède un seul attribut destiné à l'identifier.
Attributs
id
Description
précise un identificateur unique pour l'élément.
L'élément annotation ne peut être inclus que dans les éléments suivants :
all
any
anyAttribute
attribute
attributeGroup
choice
complexContent
complexType
element
enumeration
extension
field
fractionDigits
group
import
include
key
keyref
length
list
maxExclusive
maxInclusive
maxLength
minExclusive
minInclusive
minLength
pattern
redefine
restriction
schema
selector
sequence
simpleContent
simpleType
totalDigits
union
unique
whiteSpace
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<code_service>K512</code_service>
<code_service>R256</code_service>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:annotation>
<xsd:documentation>
Liste des codes de services établie le 12/04/2002
</xsd:documentation>
</xsd:annotation>
<xsd:element name="code_service">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="K512"/>
<xsd:enumeration value="R256"/>
<xsd:enumeration value="A002"/>
</xsd:restriction>
</xsd:simpleType>
Modifié le 10/05/2003
Page 76 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:element>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="code_service" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 77 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.41 / L'élément appinfo
L'élément appinfo permet de spécifier des informations destinées à être utilisée par une
application.
<xsd:appinfo
source = anyURI>
Contenu : ({any})*
</xsd:appinfo>
L'élément appinfo possède un seul attribut destiné à cibler une information applicative.
Attributs
source
Description
spécifie une adresse URI pointant vers une information.
L'élément appinfo ne peut être inclus que dans l'élément suivant :
annotation
Exemple [voir]
<?xml version="1.0"?>
<element_racine xmlns="http://www.demo.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.demo.org/schema.xsd">
<a>10</a>
<b>20</b>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.demo.org"
xmlns="http://www.demo.org"
xmlns:sch="http://www.ascc.net/xml/schematron"
elementFormDefault="qualified">
<xsd:annotation>
<xsd:appinfo>
<sch:title>Schematron Validation</sch:title>
<sch:ns prefix="d" uri="http://www.demo.org"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="element_racine">
<xsd:annotation>
<xsd:appinfo>
<sch:pattern name="Vérifie que A est plus grand que B">
<sch:rule context="d:element_racine">
<sch:assert test="d:A > d:B" diagnostics="moinsGrandQue">
A doit être plus grand que B.
</sch:assert>
</sch:rule>
</sch:pattern>
<sch:diagnostics>
<sch:diagnostic id="moinsGrandQue">
Erreur! A est moins grand que B
A = <sch:value-of select="d:A"/>
B = <sch:value-of select="d:B"/>
</sch:diagnostic>
</sch:diagnostics>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="A" type="xsd:integer"/>
<xsd:element name="B" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
Modifié le 10/05/2003
Page 78 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 79 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
2.42 / L'élément documentation
L'élément documentation spécifie une information à propos du schéma destinée à l'utilisateur.
<xsd:documentation
source = anyURI
xml:lang = language>
Contenu : ({any})*
</xsd:documentation>
L'élément documentation possède deux attributs destinés à cibler une information et à définir le
langage utilisé par cette dernière.
Attributs
source
Description
spécifie une adresse URI pointant vers une information.
xml:lang précise le langage dans lequel est écrit la documentation.
L'élément documentation ne peut être inclus que dans l'élément suivant :
annotation
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="c:\schema.xsd">
<code_service>K512</code_service>
<code_service>R256</code_service>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="code_service">
<xsd:simpleType>
<xsd:annotation>
<xsd:documentation>
Liste des codes de services établie le 12/04/2002
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="K512"/>
<xsd:enumeration value="R256"/>
<xsd:enumeration value="A002"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="element_racine">
<xsd:complexType>
<xsd:annotation>
<xsd:documentation>
L'élément code_service est
limité à 50 occurrences par page
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element ref="code_service" maxOccurs="50"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Modifié le 10/05/2003
Page 80 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3 / XML-Data Reduced
La technologie XML-Data Reduced (XDR) est un langage de schéma implémenté à partir de la
deuxième version de l'analyseur Microsoft MSXML.
Le langage XDR est apparu avant que les propositions du W3C sur les schémas ne deviennent
des spécifications. En conséquence, le W3C s'appuyant sur cette technologie expérimentée
conservera certaines de ces caractéristiques dans ses normes finales.
Toutefois, les schémas XML-Data Reduced ayant été utilisés dans de nombreuses applications comme
BizTalk devraient être dépréciés et remplacés par les spécifications XML Schema.
Sommaire
3.1 / L'élément schema
3.2 / L'élément elementType
3.3 / L'élément element
3.4 / L'élément attributeType
3.5 / L'élément attribute
3.6 / L'élément datatype
3.7 / L'élément group
3.8 / L'élément description
Modifié le 10/05/2003
Page 81 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.1 / L'élément schema
L'élément schema encadre une définition de schéma en se comportant comme un élément
racine.
<Schema
name="schema-name"
xmlns="namespace">
...
</Schema>
L'attribut name représente le nom du schéma.
L'attribut xmlns indique un ou plusieurs espaces de noms destinés à être utilisé avec le schéma.
L'élément schema est unique et ne peut posséder de parents. Par contre, il est susceptible de
contenir des éléments enfants tels que ElementType, AttributeType et description.
Les espaces de noms spécifiés utilisant l'attribut xmlns doivent inclure l'espace de noms pour les
éléments de définition du schéma, soit ElementType, AttributeType, etc..
N'importe quel préfixe peut être utilisé, mais il est opportun de créer un espace de nom par défaut
pour le schéma afin d'éviter d'utiliser des préfixes devant les éléments le composant.
L'élément schema dans un schéma XML doit aussi contenir des déclarations d'espaces de noms
pour tous les autres schémas, comme l'espace de noms qui définit les types de données insérés dans
le schéma.
<Schema
name="nom_schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
...
</Schema>
Modifié le 10/05/2003
Page 82 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.2 / L'élément elementType
L'élément elementType définit un type d'élément pour une utilisation à l'intérieur d'une élément
Schema.
<ElementType content="empty | textOnly | eltOnly | mixed"
dt:type="Type_Donnee"
model="open | closed"
name="Identificateur"
order="one | seq | many">
</ElementType>
L'attribut content détermine si le contenu doit être vide (empty), ou contient du texte (textOnly), des
éléments (eltOnly) ou les deux derniers (mixed).
L'attribut dt:type indique un type de données pour l'attribut.
L'attribut model spécifie si l'élément peut (open) ou ne peut pas (closed) inclure des éléments, des
attributs ou un contenu mixte non-déclarés explicitement dans le modèle de contenu.
L'attribut name fournit un identificateur pour le type d'attribut.
L'attribut order permet un seul jeu d'éléments (one), ou plusieurs éléments apparaissant dans une
séquence spécifiée (seq) ou un ordre quelconque (many).
La valeur seq est requise pour spécifier des séquences valides. Paar exemple, elle peut être utilisée
pour indiquer lorsqu'une séquence particulière, telle que x1,y1 ou x2,y2 est valide mais aucune autre
combinaison n'est valide.
La valeur many de l'attribut order crée les attributs maxOccurs et minOccurs non pertinent durant la
validation. Plutôt qu'une utilisation de many pour l'attribut order en conjonction avec minOccurs et
maxOccurs, utilise à la place la valeur seq.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<librairie xmlns="x-schema:c:\schema.xdr">
<livre isbn="2212110472" categorie="XML">
<titre>
Services Web avec XML, SOAP, WSDL, UDDI, ebXML...
</titre>
<auteur>Jean-Marie Chauvet</auteur>
<editeur>Eyrolles</editeur>
</livre>
<livre isbn="2100065203" categorie="XML">
<titre>XML - Manuel de Référence</titre>
<auteur>R.Wyke</auteur>
<auteur>S.Rehman</auteur>
<auteur>B.Leupen</auteur>
<editeur>Microsoft Press</editeur>
</livre>
<livre isbn="1928994474" categorie="XML">
<titre>XML.NET Developer's Guide</titre>
<auteur>Collectif</auteur>
<editeur>Syngress</editeur>
</livre>
</librairie>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Schema name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="auteur" model="closed"
content="textOnly" dt:type="string"/>
<ElementType name="editeur" model="closed"
content="textOnly" dt:type="string"/>
Modifié le 10/05/2003
Page 83 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<ElementType name="librairie" model="closed"
content="eltOnly" order="seq">
<attributeType name="xmlns" dt:type="string"/>
<attribute type="xmlns"/>
<element type="livre" minOccurs="1" maxOccurs="*"/>
</ElementType>
<ElementType name="livre" model="closed"
content="eltOnly" order="seq">
<attributeType name="isbn" dt:type="enumeration"
dt:values="1928994474 2100065203 2212110472"
required="yes"/>
<attributeType name="categorie" dt:type="string" required="yes"/>
<attribute type="isbn"/>
<attribute type="categorie"/>
<element type="titre" minOccurs="1" maxOccurs="1"/>
<element type="auteur" minOccurs="1" maxOccurs="*"/>
<element type="editeur" minOccurs="1" maxOccurs="1"/>
</ElementType>
<ElementType name="titre" model="closed"
content="textOnly" dt:type="string"/>
</Schema>
Modifié le 10/05/2003
Page 84 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.3 / L'élément element
L'élément element se référe à un type d'élément déclaré qui peut apparaître à l'intérieur de la
portée de l'élément ElementType nommé.
<element type="Type_Element"
[minOccurs="{0 | 1}"]
[maxOccurs="{1 | *}"]>
</element>
L'attribut type indique le nom d'un élément ElementType défini dans le schéma ou un autre schéma
spécifié par un espace de noms fourni. La valeur donnée doit correspondre à l'attribut name de l'élément
ElementType. Le type peut inclure un préfixe d'espace de noms.
L'attribut minOccurs détermine si l'élément est requis au mois une fois (1) ou ne l'est pas (0).
L'attribut maxOccurs détermine si l'élément doit apparaître au maximum une fois (1) ou un nombre de
fois illimité.
Les attributs minOccurs et maxOccurs ont la valeur 1 par défaut. Un élément sans attribut spécifié
utilise ces valeurs par défaut et par conséquent doit apparaître une seule fois dans un modèle de
contenu.
L'élément element peut posséder un élément parent ElementType ou group, mais aucun élément
enfant.
Les déclarations d'élément ElementType peuvent contraindre le contenu et les attributs qui
apparaissent dans les éléments de type nommé en se référant à d'autres déclarations de types
d'élément ou d'attribut.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine xmlns="x-schema:c:\schema.xdr">
<element_enfant>
Chaîne de caractères
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Schema name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="element_enfant" model="closed"
content="textOnly" dt:type="string"/>
<ElementType name="element_racine" model="closed"
content="eltOnly" order="seq">
<attributeType name="xmlns" dt:type="string"/>
<attribute type="xmlns"/>
<element type="element_enfant" minOccurs="1" maxOccurs="1"/>
</ElementType>
</Schema>
Modifié le 10/05/2003
Page 85 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.4 / L'élément attributeType
L'élément attributeType définit un type d'attribut pour une utilisation à l'intérieur d'un élément
schema.
<AttributeType default="Valeur"
dt:type="Type_Primitif"
dt:values="Valeur_Enumeree"
name="Identificateur"
required="{yes | no}">
</AttributeType>
L'attribut default définit une valeur par défaut pour l'attribut.
L'attribut dt:type indique un type de données pour l'attribut.
L'attribut dt:value spécifie une liste de valeurs possible pour l'attribut si dt:type est fixé à enumerated.
L'attribut name fournit un identificateur pour le type d'attribut.
L'attribut required détermine si l'attribut est requis dans l'élément.
Dans l'implémentation fournie avec Internet Explorer 5.0, un attribut peut prendre un des types
suivants :
entity,
entities,
enumeration,
id,
idref,
idrefs,
nmtoken,
nmtokens,
notation,
string.
Lorsque le type enumeration est sélectionné, l'attribut dt:values doit indiquer une liste de valeurs
permises.
Des références à cet attribut à l'intérieur d'une définition d'un ElementType sont créées dans le
schéma avec l'élément attribute. Le nom fourni correspond à l'attribut type de l'élément attribute.
L'élément AttributeType peut posséder un élément parent ElementType ou Schema et des éléments
enfants datatype et description.
Une déclaration AttributeType contenue à l'intérieur d'un ElementType définit que le type
d'attribut à l'intérieur de la portée du type d'élément qui le contient.
Dans un schéma XML, l'ordre d'apparence des attributs dans un élément n'est pas contraint et un
attribut donné ne peut apparaître plus d'une fois dans un élément.
<attributeType name="couleurs"
dt:type="enumeration"
dt:values="red green blue"/>
<!ATTLIST x colors (red | green | blue)>
L'exemple suivant déclare un type d'attribut appelé nom. Cette déclaration contraint les attributs nom
pour contenir seulement un nom symbolique.
<attributeType name="nom" dt:type="nmtoken"/>
Modifié le 10/05/2003
Page 86 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine xmlns="x-schema:c:\schema.xdr"
attribut_racine="valeur">
<element_enfant attribut_enfant="valeur">
Chaîne de caractères
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Schema name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="element_enfant" model="closed"
content="textOnly" dt:type="string">
<attributeType name="attribut_enfant" dt:type="string" required="yes"/>
<attribute type="attribut_enfant"/>
</ElementType>
<ElementType name="element_racine" model="closed"
content="eltOnly" order="seq">
<attributeType name="attribut_racine" dt:type="string" required="yes"/>
<attribute type="attribut_racine"/>
<attributeType name="xmlns" dt:type="string"/>
<attribute type="xmlns"/>
<element type="element_enfant" minOccurs="1" maxOccurs="1"/>
</ElementType>
</Schema>
Modifié le 10/05/2003
Page 87 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.5 / L'élément attribute
L'élément attribute correspond à un type d'attribut déclaré qui peut apparaître à l'intérieur de la
portée d'un élément défini par elementType.
<attribute default="Valeur"
type="Type_Attribut"
[required="{yes | no}"]>
...
</attribute>
L'attribut default définit une valeur par défaut pour l'élément attribute.
L'attribut type indique le nom de l'élément attributeType défini dans le schéma en cours.
L'attribut required détermine si l'élément attribute est requis dans l'élément.
Lorsque l'attribut required est fixé à yes et une valeur est indiquée dans l'attribut default, la valeur par
défaut fournie doit toujours être la valeur de l'attribut. Les documents contenant d'autres attributs
sont invalides.
Lorsque l'attribut required est fixé à yes et aucune valeur par défaut n'est spécifiée, chaque élément
dont le type est déclaré pour avoir l'attribut, doit fournir sa valeur.
L'élément attribute posséde forcément un élément parent elementType, mais aucun enfant.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<element_racine xmlns="x-schema:c:\schema.xdr"
attribut_racine="valeur">
<element_enfant attribut_enfant="valeur">
Chaîne de caractères
</element_enfant>
</element_racine>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Schema name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="element_enfant" model="closed"
content="textOnly" dt:type="string">
<attributeType name="attribut_enfant" dt:type="string" required="yes"/>
<attribute type="attribut_enfant"/>
</ElementType>
<ElementType name="element_racine" model="closed"
content="eltOnly" order="seq">
<attributeType name="attribut_racine" dt:type="string" required="yes"/>
<attribute type="attribut_racine"/>
<attributeType name="xmlns" dt:type="string"/>
<attribute type="xmlns"/>
<element type="element_enfant" minOccurs="1" maxOccurs="1"/>
</ElementType>
</Schema>
Modifié le 10/05/2003
Page 88 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.6 / L'élément datatype
L'élément datatype spécifie le type de données pour les éléments ElementType et AttributeType.
<datatype dt:type="Type_Donnee"/>
L'attribut dt:type détermine un type de données pour un élément ou un attribut.
<ElementType name="colors">
<datatype dt:type="char"/>
</ElementType>
L'élément datatype peut posséder un élément parent ElementType ou AttributeType et aucun
élément enfant.
La fonctionnalité de datatype est une extension proposée par le schéma XML qui ne peut être spécifié
en utilisant la syntaxe de la définition de type de document (DTD).
Sommaire
3.6.1 / Référence des types de données XML
Modifié le 10/05/2003
Page 89 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.6.1 / Référence des types de données XML
En plus des chaînes de caractères et les autres types primitifs définis par les recommandations XML 1.0,
l'analyseur XML de Microsoft supporte un jeu additionnel de types de données. Il supporte aussi les
conversions entre les type primitifs et les types de données précités.
Les types de données sont référencés à partir de l'espace de noms urn:schemas-microsoftcom:datatypes. Pour utiliser les types de données à l'intérieur d'un schéma XML, il suffit de déclarer cet
espace de noms à l'intérieur de l'élément schema par l'intermédiaire de l'attribut xmlns.
<Schema name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<!-- ... -->
</Schema>
Types de données
Type
Description
id
représente un attribut de type ID.
idref
représente une référence à un attribut de type ID.
idrefs
représente une liste de références à des attributs ID.
nmtoken
représente un attribut de type NMTOKEN.
nmtokens
représente des attributs de type NMTOKENS.
enumeration représente une liste de valeurs de type NMTOKEN permises.
string
représente un chaîne de caractères CDATA.
number
représente un nombre décimal.
int
représente un entier.
fixed.14.4
représente un nombre avec 14 chiffres avant la virgule et 4 après.
boolean
représente une valeur booléenne true ou false.
dateTime
représente une date au format ISO 8601 (2002-05-07T19:40:25).
dateTime.tz
représente une date au format ISO 8601 (2002-05-07T19:40:25-05:00).
date
représente une date au format ISO 8601 (2002-10-08).
time
représente une heure au format ISO 8601 (17:30:54).
time.tz
représente une date au format ISO 8601 (17:30:25-08:00).
i1
représente un nombre entier compris entre -128 et 127.
i2
représente un nombre entier compris entre -32768 et 32767.
i4
représente un nombre entier compris entre -2147483648 et 2147483647.
i8
représente un nombre entier compris entre -9223372036854775808 et
9223372036854775807.
ui1
représente un nombre entier non-signé compris entre 0 et 255.
ui2
représente un nombre entier non-signé compris entre 0 et 65535.
ui4
représente un nombre entier non-signé compris entre 0 et 4294967296.
ui8
représente un nombre entier non-signé compris entre 0 et 18446744073709551615).
Modifié le 10/05/2003
Page 90 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
r8
représente un nombre à virgule flottante compris entre 2.2250738585072014E-308 et
1.7976931348623157E+308.
r4
représente un nombre à virgule flottante compris entre 1.17549435E-38F et
3.40282347E+38F.
uri
représente une adresse URI (Uniform Resource Identifier).
bin.hex
représente des données binaires encodées en hexédécimal.
bin.base64
représente des données binaires encodées en Base 64.
Modifié le 10/05/2003
Page 91 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.7 / L'élément group
L'élément group organise le contenu à l'intérieur d'un groupe pour spécifier une séquence.
<group maxOccurs="{1 | *}"
minOccurs="{0 | 1}"
order="{one | seq | many}">
...
</group>
L'attribut minOccurs détermine si l'élément est requis au mois une fois (1) ou ne l'est pas (0).
L'attribut maxOccurs détermine si l'élément doit apparaître au maximum une fois (1) ou un nombre de
fois illimité.
Les attributs minOccurs et maxOccurs ont une valeur par défaut égale à 1. Un groupe sans attributs doit
apparaître une et une seule fois dans un modèle de contenu.
L'attribut order permet une seule instance (one) de chaque élément contenu dans un groupe, ou
plusieurs éléments apparaissant dans une séquence spécifiée (seq) ou un ordre quelconque (many).
L'élément group possède un parent ElementType et des frères element ou description.
L'attribut order prend les mêmes valeurs que l'attribut order de l'élément ElementType.
Exemple [voir]
<?xml version="1.0" encoding="ISO-8859-1"?>
<recueil xmlns="x-schema:c:\schema.xdr">
<poeme>
<titre>Locution des pierrots</titre>
<strophe>Je ne suis qu'un viveur lunaire
Qui fait des ronds dans le bassin
Et cela, sans autre dessein
Que de devenir légendaire.</strophe>
<strophe>Retroussant d'un air de défin
Mes manches de Mandarin pâle,
J'arrondis ma bouche et - j'exhale
Des conseils doux de Crucifix</strophe>
<strophe>Ah! oui, devenir légendaire,
Au seuil des siècles charlatans !
Mais où sont les Lunes d'antan ?
Et que Dieu n'est-il à refaire ?</strophe>
<auteur>Jules Laforgue</auteur>
</poeme>
<poeme>
<ref>1254369785</ref>
<lien>http://localisation.poeme.com</lien>
</poeme>
</recueil>
<?xml version="1.0" encoding="ISO-8859-1"?>
<Schema
name="schema"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="recueil" model="closed"
content="eltOnly" order="seq">
<element type="poeme" minOccurs="1" maxOccurs="*"/>
</ElementType>
<ElementType name="lien" model="closed"
content="textOnly" dt:type="uri"/>
<ElementType name="ref" model="closed"
content="textOnly" dt:type="i4"/>
<ElementType name="auteur" model="closed"
content="textOnly" dt:type="string"/>
<ElementType name="strophe" model="closed"
content="textOnly" dt:type="string"/>
Modifié le 10/05/2003
Page 92 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
<ElementType name="titre" model="closed"
content="textOnly" dt:type="string"/>
<ElementType name="poeme" model="closed" order="one">
<group order="seq" minOccurs="1">
<element type="titre" minOccurs="1" maxOccurs="1"/>
<element type="strophe" minOccurs="1" maxOccurs="*"/>
<element type="auteur" minOccurs="1" maxOccurs="1"/>
</group>
<group order="seq" minOccurs="1">
<element type="ref" minOccurs="1" maxOccurs="1"/>
<element type="lien" minOccurs="1" maxOccurs="1"/>
</group>
</ElementType>
</Schema>
Modifié le 10/05/2003
Page 93 sur 94
L'Altruiste : Le guide des langages Web - Les schémas XML
3.8 / L'élément description
L'élément description fournit une documentation à propos d'un élément ElementType ou
AttributeType.
<description>
Contenu XML bien formé...
</description>
L'élément description peut posséder un élément parent ElementType, AttributeType, element,
attribute, group, Schema et n'importe quel contenu XML bien formé.
Un seul et unique élément description peut être contenu dans un des éléments parents précités.
L'information fournie à l'intérieur de l'élément description n'est pas utilisée dans la validation, mais
donne un chemin standardisé pour fournir une information qui peut être récupéré par des outils.
<ElementType name="livre">
<description>
'date' indique la date d'édition du livre.
</description>
<element type="date"/>
</ElementType>
Modifié le 10/05/2003
Page 94 sur 94

Documents pareils

XML Schema - Université de Cergy

XML Schema - Université de Cergy