Было бы полезно увидеть примеры выражений XPath, которые работают не так, как вы думаете. Вот несколько возможных причин (ошибки, которые я часто совершаю).
Предположим, XML-документ, такой как:
<A>
<B>
<C d='e'/>
</B>
<C/>
<D xmlns="http://foo"/>
</A>
забыв удалить косую черту верхнего уровня ('/'), представляющую документ:
document.XPathSelectElements("/A")
// выбирает один узел A
document.XPathSelectElements("//B")
// выбирает один узел B
document.XPathSelectElements("//C")
// выбирает два узла C
но
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
(Это часто проблема, когда корневой узел содержит пространство имен без префиксов - его легко пропустить)