Il serait utile de voir des exemples d'expressions XPath qui ne fonctionnent pas comme vous le pensez. Voici quelques causes possibles (erreurs que je fais fréquemment).
Supposons un document XML tel que:
<A>
<B>
<C d='e'/>
</B>
<C/>
<D xmlns="http://foo"/>
</A>
oubliant de retirer la barre de niveau supérieur ('/') représentant le document:
document.XPathSelectElements("/A")
// sélectionne un seul Noeud
document.XPathSelectElements("//B")
// sélectionne un seul noeud B
document.XPathSelectElements("//C")
// sélectionne deux noeuds C
mais
aNode.XPathSelectElements("/B") // selects nothing (this looks for a rootNode with name B)
aNode.XPathSelectElements("B") // selects a B node
bNode.XPathSelectElements("//C") // selects TWO C nodes - all descendants of the root node
bNode.select(".//C") // selects one C node - all descendants of B
oublier les espaces de noms.
aNode.XPathSelectElements("D")
// sélectionne rien (D est dans un espace de noms différent de A) aNode.XPathSelectElements("[local-name()='D' and namespace-uri()='http://foo']")
// un node D
(Ceci est souvent un problème lorsque le nœud racine comporte un espace de noms prefixless - facile à miss)
Il est difficile d'aider avec une telle question générique; pourriez-vous poster un exemple de fichier xml et xpath votre essayant de travailler? –