Le langage XPointer accepte une instruction spéciale afin de spécifier l'espace de noms de l'élément à atteindre.

Si un pointeur tente de cibler un élément contenant un préfixe d'espace de noms, sans l'avoir auparavant déclarer, une erreur sera retournée.

C'est pourquoi, un XPointer peut combiner une partie déclarant l'URI (Uniform Resource Identifier) de l'espace de noms cible xmlns() et le pointeur xpointer() afin de lever toute ambiguité quant à l'espace de nom à accèder.

xmlns(prefixe=URI) xpointer(expression)

xmlns(art=http://www.art.com/xmlns/) xpointer(//art:element)

Comme pour les combinaisons de pointeurs, il est possible de déclarer plusieurs espaces de noms si l'expression du XPointer fait appel à plusieurs préfixes namespace différents.

<xmlns(pfx1=URI1) xmlns(pfx2=URI2) xpointer(//pfx1:elt/pfx2:elt)
Exemple
<!-- http://www.site.com/archive.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE archive SYSTEM "../dtd/archive.dtd">
<archive xmlns="http://www.site.com/xmlns/xln/"
              xmlns="http://www.site.com/xmlns/cbn/"
              xmlns="http://www.site.com/xmlns/arc/"
              xmlns="http://www.site.com/xmlns/lbr/">
  <xln:document>
  <arc:partie id="KL001">
      <arc:date>10/05/61</arc:date>
      <arc:auteur>Henri Archit</arc:auteur>
      <lbr:auteur>Jaccques Labrosse</lbr:auteur>
      <arc:texte>
      ...
      </arc:texte>
  </arc:partie>
  <lbr:partie id="KL002">
      <lbr:date>15/06/61</lbr:date>
      <lbr:auteur>Jaccques Labrosse</lbr:auteur>
      <lbr:texte>
      ...
      </lbr:texte>
  </lbr:partie>
  ...
  </xln:document>
  <cbn:document>
  ...
  </cbn:document>
  ...
</archive>

Sélection du premier noeud <arc:partie>.

xpointer(id('KL001'))

Sélection de <arc:auteur> et de <lbr:auteur>.

xpointer((id('KL001')/*[2])range-to(id('KL001')/*[3]))

Sélection du noeud dont l'identifiant est KL002 ou le cas échéant du second noeud <lbr:partie> du premier document <xln:document> dans l'élément racine <archive>.

xpointer(id('KL002')) xpointer(/*[1]/*[1]/*[2])

Sélection de l'élément <arc:partie> avec l'espace de noms approprié.

xmlns(arc=http://www.site.com/xmlns/arc/) xpointer(//arc:partie)

Sélection de l'élément <lbr:auteur> dans le noeud <arc:partie> avec les espaces de noms appropriés.

<!-- Cette expression doit être écrite sur une seule ligne ->
xmlns(arc=http://www.site.com/xmlns/arc/) 
        xmlns(lbr=http://www.site.com/xmlns/lbr/)
                xpointer(//arc:partie/lbr:auteur)

Sélection du second noeud dans <arc:partie> avec l'espace de nom approprié.

xmlns(arc=http://www.site.com/xmlns/arc/) 
        xmlns(lbr=http://www.site.com/xmlns/lbr/)
                xpointer(//arc:partie[position()=2])