Namespace

Principe

Un namespace (ou espace de noms en français) est une mécanique qui permet d'assurer l'unicité des noms des éléments utilisés au sein des fichiers XML, dans l'objectif de pouvoir « mélanger » différents schémas.

  • Soit un extrait de schéma S1 qui définit un élément de syntaxe en informatique comme contenant du code : ... {element syntaxe {code {...}}}*

  • Soit un extrait de schéma S2 qui définit un élément de syntaxe en mathématique comme contenant une équation : ... {element syntaxe {equation {...}}}*

Si je souhaite, dans un schéma S3 réutiliser les éléments syntaxe issus de S1 et S2, je rencontre un conflit de noms : en effet, deux éléments portant le même nom, « syntaxe », définissent en fait des éléments différents.

Le namespace va me permettre de différencier ces deux éléments, en associant un nom unique aux schémas S1 et S2, par exemple une adresse web.

Si j'associe www.utc.fr/S1 au premier schéma et www.utc.fr/S2 au second, j'obtiens alors deux noms de balises différents :

  • www.utc.fr/S1:syntaxe

  • www.utc.fr/S2:syntaxe

Préfixe

Cette écriture étant quelque peu fastidieuse, il est également possible d'associer un préfixe au namespace. La correspondance entre le namespace et le préfixe est déclarée dans le fichier XML, ce qui permet à un programme informatique de remplacer les préfixes par les namespaces.

Finalement, on obtient :

  • Préfixe s1 associé au namespace www.utc.fr/S1 et écriture XML s1:syntaxe

  • Préfixe s2 associé au namespace www.utc.fr/S2 et écriture XML s2:syntaxe

RemarqueNamespace par défaut

Il est possible de définir un namespace par défaut ce qui permet d'avoir un namespace pour chaque balise, sans avoir à utiliser de préfixe.

Syntaxe

1
<elementRacine 
2
  xmlns:prefixe1="namespace1" 
3
  xmlns:prefixe2="namespace2" ...
4
  xmlns:prefixeN="namespaceN" 
5
  xmlns="namespaceDesÉlémentsNonPréfixés" 
6
>

DéfinitionNom développé

Un nom développé (expanded name) est le couple constitué par un nom d'espace de nommage (namespace name) et par un nom local (local name).