Rappel XML
un code XML dépourvu de l'attribut xmlns ne constitue pas un code erroné, en revanche il s'agira au mieux d'un code XML bien formé, mais en aucun cas d'un code XML valide car aucun analyseur ne saura comment utiliser le code ainsi présenté.
<mon_doc xmlns="http://ma-grammaire.org">
<titre>
Un document XML</titre>
<contenu type="description" mode="edition">
Voici un<saut/>
document XML contenant :<lpuce>
<litem>
un titre précisé par la balise titre</litem>
<litem>
un ensemble de descriptions regroupées<saut/>
dans un bloc de liste à puce (balise lpuce)<saut/>
dont chaque élément est un litem.</litem>
<litem>
un paragraphe (balise paragraphe)<saut/>
<litem>
des sauts de ligne (balise saut)</litem>
</lpuce>
</contenu>
<paragraphe mode="important">
Toutes les balises sont définies par la grammaire http://ma-grammaire.org</paragraphe>
</mon_doc>
Ce document ne pourra être interprété que par des outils ayant la connaissance de la grammaire définie par http://ma-grammaire.org.
<paragraphe id="element1">...</paragraphe>
<paragraphe class="style1">...</paragraphe> <titre class="style1">...</titre>
Les classes sont très souvent utilisées pour affecter un style à un groupe d'éléments via les sélecteurs CSS tandis que les identifiants sont principalement utilisés par le javascript afin d'attraper les éléments sans ambiguïté.
<mon_doc xmlns="http://ma-grammaire.org" xmlns:extra="http://autre-grammaire.org" xmlns:test="http://mes-tests/ma-grammaire.org"> <paragraphe>un texte</paragraphe> <extra:ma_liste>liste dans second espace</extra:ma_liste> <test:verif>élément dans troisième espace</test:verif> ...</mon_doc>
Il est également possible de mixer les espaces de nommage par intégration d'un élément dans le code XML en indiquant à celui-ci l'attribut xmlns="http://autre_grammaire". À partir de là toute la hiérarchie sous jacente sera définie dans la grammaire http://autre_grammaire.
D'où l'analogie végétale racine/branches/feuilles.