Afin d'éviter ce genre de problème, chaque application s'approprie un espace de noms qui permet de préfixer les définitions qui lui sont propres et qu'elle expose aux autres applications. L'application est identifiée avec une Uniform Resource Identifier (URI).
Cet espace de nom est déclaré dans une balise racine de l'espace de noms au moyen de la propriété spéciale xmlns.
L'espace de nom est définit soit explicitement avec un identifiant soit implicitement. En ce cas, il porte le nom de la balise racine.
L'espace de noms est valide pour la liste d'attributs et le contenu de cette balise racine et de toutes les balises imbriquées.
La balise racine peut supporter plusieurs déclaration d'espaces de noms i.e. plusieurs instanciations de l'attribut xmlns.
<-- Debut de l'espace de nom http://www.mon-serveur.com/mon-application identifie par MonPrefixe -->
<MonPrefixe:MaBalise xmlns:MonPrefixe="http://www.mon-serveur.com/mon-application" MonPrefixe:MonAttribut="Bonjour">
...
<MonPrefixe:MaBalise2 MonPrefixe:MonAttribut2="Hello">
...
</MonPrefixe:MaBalise2>
...
</MonPrefixe:MaBalise>