Introduction
XML est un langage de structuration de document utilisant des balises
(de la même manière qu'HTML est un langage de présentation).
La puissance du langage XML réside dans la possibilité
de définir ses propres balises (XML est donc un méta-langage),
et donc de créer une sémantique appropriée
à un certain type de métier ou de relation d'affaires.
La définition d'une sémantique est contenue dans une
DTD (Document Type Definition), à laquelle se réfèrent
les documents XML.
Les espaces de nom (namespaces) permettent de disposer,
dans un document XML, de balises provenant de différentes
sémantiques (DTD): par exemple des balises HTML, MathML,
etc. Il se peut que deux sémantiques fournissent des balises
de même nom, mais de significations différentes. Les
espaces de nom résolvent ce problème en qualifiant
de manière unique un objet (élément ou attribut),
caractérisé par un nom et un domaine de définition
sur lequel il a telle signification. En pratique, on préfixera
l'objet de l'espace de nom correspondant.
Exemple
Les espaces de nom sont identifiés par des URIs (Uniform
Resource Identifiers), mais l'on précise pour chacun
d'eux un "label" qui servira de préfixe aux balises
concernés. Ainsi, on écrira par exemple:
<UnElement xmlns:UnEspaceDeNom="UneURI">
xmlns étant le "mot-clé" XML permettant
de définir un espace de nom.
Le champ d'utilisation de notre espace de nom est délimité
par les balises d'ouverture et de fermeture de l'élément
auquel il est associé (UnElement ici); l'URI (UneURI ici)
peut par exemple être:
http://www.w3.org/REC-html40 pour les
balises HTML 4.0
http://www.w3.org/REC-MathML pour les
balises MathML
quant au préfixe, il n'est pas signifiant (seul l'URI caractérise
l'espace de nom) mais commode. Si l'on écrit:
<exemple xmlns:H="http://www.w3.org/REC-html40"
xmlns:M="http://www.w3.org/REC-MathML">
<H:b><M:mn>2</M:mn></H:b>
</exemple>
Les balises HTML et MathML sont parfaitement identifiées
grâce aux préfixes H et M qui renvoient aux
URI correspondantes. Remarquons que notre élément
"exemple" doit avoir été défini au
préalable et correspondre à une DTD. On peut ainsi
écrire:
<exemple xmlns="UneURI"
xmlns:H="http://www.w3.org/REC-html40"
xmlns:M="http://www.w3.org/REC-MathML">
L'intérêt des espaces de nom est particulièrement
notable dans le cas où il y a "conflit" de signification.
Si l'on fait appel à une DTD contenant des balises nommées
B, et que l'on inclut dans le même document XML du code HTML
utilisant la balise B, il faudra définir un espace de nom
(par exemple xmlns:H="http://www.w3.org/REC-html40)
qui permettra de lever l'ambiguité (la balise <b> étant
sémantiquement distincte de la balise <H:b> dans notre
exemple).
Les applications e-business tirent également profit des espaces
de nom, et notamment les portails: les espaces de nom leur permettent
en effet d'identifier la source des données présentées,
mais également, si besoin est, de disposer (via les
balises spécifiques) des outils d'affichage, par exemple,
propres à la source des données.
|