Я расширил ваш пример, чтобы иметь возможность различать узел c
, который находится в узле a/b
, и узел c
, который не является.
function xpath_by_string (xml)
{
dom = (new DOMParser()).parseFromString(xml, "text/xml");
return function (expr, node)
{
if (!node) { node = dom; }
return dom.evaluate (expr, node, null,
XPathResult.UNORDERED_NODE_ITERATOR_TYPE,
null)
.iterateNext();
};
}
var xpath = xpath_by_string ("<a><c class='not_in_b'></c><b><c class='in_b'></c></b></a>");
С помощью вышеуказанного кода вы можете выбрать c
относительно a/b
с помощью:
xpath ('c', xpath ('a/b'))
Проверено в Firefox.