Выберите элемент в пространстве имен с XPath
Я хочу выбрать самый верхний элемент в документе с заданным пространством имен (префикс).
В частности: у меня есть документы XML, которые либо начинаются с /html/body (в пространстве имен XHTML), либо с одним из нескольких элементов в определенном пространстве имен. Я действительно хочу вырезать /html/body и просто вернуть содержимое тела или весь корневой элемент с пространством имен.
Ответы
Ответ 1
В XPath 2.0 и XQuery 1.0 вы можете протестировать префикс пространства имен, используя функцию in-scope-prefixes() в предикате.
например.
//*[in-scope-prefixes(.)='html']
Если вы не можете использовать v2, в XPath 1.0 вы можете использовать функцию namespace-uri() для тестирования против самого пространства имен.
например.
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
Ответ 2
Я хочу, чтобы выражение XPath:
/html:html/html:body/node()|/foo:*
Где префикс "html" отображается в пространство имен XHTML, а префикс "foo" сопоставляется с моим целевым пространством имен.