Bien que fondamental en XML, le concept des espaces de noms n'est pas toujours bien compris et donc pas toujours bien respecté.
On tente ici d'expliquer par écrit ce concept, notamment au travers de l'exemple du LOM, LOMFR ...
Rappel
Les espaces de noms en XML sont une recommandation du W3C. Ils permettent d'identifier de manière unique les éléments et attributs des fiches XML. De fait, ils permettent de mettre en oeuvre le côté eXtensible de XML.
Aussi lorsque l'on définit un "langage XML" (on devrait d'ailleurs plutôt parler d' "application XML") dont les instances/fiches sont destinées à être des formats/vecteurs d'échange d'information entre plusieurs entités (logicielles ou non), il est important voir même impératif d'associer à ce nouveau langage un voir plusieurs espaces de noms XML (pré-existants et/ou nouvellement créés).
Un espace de noms s'applique aux éléments et attributs des fichiers XML. De manière pragmatique, chacun des éléments et attributs utilisés dans des fichiers XML d'échange devrait être déclaré dans un espace de noms (cela excepté les potentiels éléments/attributs réservés en XML).
Spécifier que des éléments et attributs sont dans un espace de noms donné, c'est garantir que ces éléments et attributs répondent au langage (implémentant un standard, une norme ...) identifié par l'espace de noms.
Un espace de noms est donné/représenté par un identifiant : une URI (Uniform Resource Identifier) qui est généralement une URL (il faut noter que cette URL ne pointe pas forcément sur un document existant : c'est bien un identifiant). Cet identifiant est utilisé via l'attribut réservé en XML xmlns qui permet dans une fiche XML de spécifier (via un préfixe ou non dans le cas de l'espace de noms par défaut) ensuite que l'on utilise tel élément ou tel attribut de tel espace de noms. Finalement, cela permet d'identifier de manière unique les éléments et attributs d'un "langage XML" : c'est le couple espace de noms et nom de l'élément/attribut qui permet cette identification.
L'exemple suivant :
<title xmlns="http://dummy.univ-rennes1.fr/xsd/dummy" />
est par exemple équivalent à :
<toto:title xmlns:toto="http://dummy.univ-rennes1.fr/xsd/dummy" />
mais non équivalent à :
<title xmlns="http://dummy.cndp.fr/xsd/dummy" />
L'élément title issu de http://dummy.univ-rennes1.fr/xsd/dummy et l'élément title issu de http://dummy.cndp.fr/xsd/dummy ne sont pas similaires, ils représentent 2 balises différentes qui répondent à 2 langages différents dans 2 espaces de noms différents.
Les différents logiciels qui manipulent des fichiers XML d'un langage XML donné doivent utiliser les espaces de noms au travers de parsers XML et autres outils pour assurer un réel support du langage concerné.
En XML, il est possible de vérifier que les éléments et attributs d'un fichier XML sont techniquement bien formés par rapport aux espaces de noms auxquels ces éléments et attributs font référence.
Pour ce faire, les technologies XML disposent de plusieurs outils : DTD, XML Schema, RELAX NG, Schematron ...
Cette phase de validation est nécessaire dans le cadre de la validation d'une fiche XML par rapport à un langage donné.
LOM
Le standard LOM utilise naturellement un espace de noms spécifique LOM http://ltsc.ieee.org/xsd/LOM qui permet donc d'identifier les ressources LOM. Lorsqu'on utilise cet espace de noms LOM dans des fiches XML, on s'engage donc en quelque sorte à respecter le standard qu'est le LOM.
Pour pouvoir valider le format des fiches XML LOM, le LOM propose des schémas XML LOM disponibles en ligne.
Le schéma http://ltsc.ieee.org/xsd/lomv1.0/lom.xsd (qui correspond en fait à lomStrict.xsd) est la déclinaison « stricte » de LOM : ce schéma ne permet pas l'utilisation conjointe d'un autre espace de noms que l'espace de noms LOM dans une fiche dite LOM.
Le schéma lomLoose http://ltsc.ieee.org/xsd/lomv1.0/lomLoose.xsd autorise quand à lui une utilisation conjointe de l'espace de noms LOM et d'autres espaces de noms. Lorsque l'on décide de produire et manipuler du LOM ou une extension de celui-ci, la validation technique des fiches en lomLoose est nécessaire, elle n'est cependant pas suffisante.
Aussi dans le cadre d'un projet comme LOMFR qui vise à étendre le LOM, il est nécessaire de proposer des outils permettant de valider au mieux les fiches LOMFR.
LOMFR
Au niveau du LOMFR, l'espace de noms officiel associé à la norme est http://www.lom-fr.fr/xsd/LOMFR.
Le LOMFR étend le LOM en
- proposant de nouveaux éléments/attributs,
- proposant de nouveaux vocabulaires,
- rendant obligatoire/unique certains éléments/attributs,
- supprimant certains éléments/attributs,
- supprimant certains vocabulaires.
Dans une fiche LOMFR, l'espace de noms LOMFR est à utiliser conjointement à l'espace de noms LOM. Les éléments et attributs issus de LOM doivent naturellement être déclarés dans l'espace de noms LOM http://ltsc.ieee.org/xsd/LOM, les éléments et attributs issus du LOMFR doivent être donnés dans l'espace de noms LOMFR http://www.lom-fr.fr/xsd/LOMFR.
Outils
Afin d'aider au mieux les développements d'outils, la mise en place d'échange entre plusieurs entités etc. autour du LOMFR, le LOMFR proposera un certain nombre d'outils, de recommandations, de bonnes pratiques autour de la norme LOMFR.
Parmi eux, on trouvera des schémas et schématrons XML qui permettent de valider une fiche LOMFR : ils valident à la fois les éléments LOM (en prenant en compte les spécificités apportés par LOMFR : suppression/cardinalité de certains éléments/vocabulaires) ainsi que les éléments LOMFR.
Conclusion
Déclarer dans un XML que les éléments et attributs utilisés proviennent des espaces de noms LOM et LOMFR, c'est identifier le XML comme répondant à la norme LOMFR. La validation des fichiers XML est une condition nécessaire pour s'assurer que ces fichiers respectent bien ce contrat ainsi passé. La possible interopérabilité des fichiers XML LOMFR entre les plateformes d'échange (de type OAI-PMH par exemple), la compatibilité des outils d'éditions, etc. ne peuvent être réalités que si ces règles (et donc la prise en compte des espaces de noms) sont scrupuleusement respectées.
C'est également le respect de ces règles qui permet une interopérabilité des fiches LOM (dont les fiches LOMFR, et toutes autres fiches dont le langage étend LOM) au niveau des différents outils LOM.