La formulation complète des expressions peuvent combiner plusieurs parties spécifiques des XPointers.
Un X-Pointeur commence toujours par le mot xpointer, hormis pour les formes abrégées, et renferme l'expression à proprement parler au sein de paranthèses.
xpointer(expression) xpointer(/descendant::element[6])
L'exemple ci-dessus permet d'atteindre le sixième élément qui descend directement ou indirectement du noeud racine.
Une combinaison de plusieurs X-Pointeurs se suivant, séparés par un espace blanc, permet une évaluation de la gauche vers la droite en cas d'échec de la partie précédente pour une quelconque raison.
xpointer(expression) xpointer(expression) xpointer(/elt_racine/element) xpointer(//element)
Ce pointeur sélectionne les éléments <element> présents sous l'élément racine <elt_racine>. Si la première expression échoue alors la seconde prend le relais et tente de trouver l'élément <element> dans la descendance du noeud racine.
Sommaire