Un Schéma XML définit la structure syntaxique et sémantique que les documents XML, qui référencent le Schéma XML, doivent respecter pour être valides.
Par exemple, le document XML suivant :
Peut être validé contre le Schéma XML suivant :
Pour déclarer que le document XML doit se conformer à un Schéma XML,
en premier, il faut que le Schéma XML définisse un espace de nom que, par la suite, le document XML doit référencer pour être validé contre le Schéma XML :
-
Le Schéma XML utilise l'attribut "
targetNamespace
"
pour préciser un espace de nom ("http://www.mtitek.com/ns/books
") qui peut être utilisé par les documents XML.
Le Schéma XML peut aussi définir un espace de nom (qui peut être equivalent à celui definit pour l'attribut "targetNamespace
")
Mais ce dernier est utilisé uniquement à l'interieur du Schéma XML pour identifier des éléments du Schéma XML.
-
Le document XML doit définir un espace de nom dont la valeur doit correspondre à la valeur de l'attribut "
targetNamespace
" dans le Schéma XML.
Le document XML doit définir aussi un espace de nom "http://www.w3.org/2001/XMLSchema-instance
"
qui sera utilisée pour spécifier la location du Schéma XML (attribut "schemaLocation
").
Le préfixe "xsi
" étant le standard pour spécifier le Schéma XML à utiliser, mais n'importe quel nom fonctionnera correctement.
La valeur de l'attribut "schemaLocation
" est composée de deux parties (séparées par un espace) :
La première partie est le nom de l'espace de nom (doit correspondre à la valeur de l'attribut "targetNamespace
" dans le Schéma XML)
et la deuxième partie est la location du Schéma XML.
La location du Schéma XML peut être relatif au document XML (exemple : "booksSchemaFile.xsd
")
ou absolue en spécifiant un chemin explicite sur une ressource locale (disque dure : "file:///C:/xs/booksSchemaFile.xsd
")
ou distante (intranet ou internet : "http://www.mtitek.com/xs/booksSchemaFile.xsd
").
Dans le document XML, les éléments (aussi les attributs) peuvent être qualifiés ou non-qualifiés.
Notes :
Un élément (ou un attribut) est qualifiée si elle a un espace de noms associé,
que ce soit explicite avec un préfixe ou implicite, sans préfixe (espace de nom par défaut).
Il est possible de préciser si les éléments doivent être qualifiés en utilisant l'attribut "
elementFormDefault
" dans le Schéma XML :
► Si la valeur de cet attribut est "
qualified
" alors les éléments doivent être qualifiés.
► Si cet attribut est omit ou sa valeur est "
unqualified
" alors les éléments doivent être non-qualifiés.
Il est aussi possible de préciser si les attributs doivent être qualifiés en utilisant l'attribut "
attributeFormDefault
" dans le Schéma XML :
► Si la valeur de cet attribut est "
qualified
" alors les attributs doivent être qualifiés.
► Si cet attribut est omit ou sa valeur est "
unqualified
" alors les attributs doivent être non-qualifiés.
Si les éléments (de même les attributs) doivent être qualifiés,
alors la validation du document XML générera une erreur s'ils n'ont pas un espace de noms associé.
Par contre, s'ils doivent être non-qualifiés,
alors la validation du document XML générera une erreur s'ils sont associés à un espace de noms (y compris l'espace de nom par défaut).
Voici un exemple du Schéma XML avec le document XML qui utilisent ces deux attributs :
- Schéma XML :
- Document XML :