Выберите элемент в пространстве имен с помощью XPath
-
02-07-2019 - |
Вопрос
Я хочу выбрать самый верхний элемент в документе, имеющий заданное пространство имен (префикс).
Более конкретно:У меня есть XML-документы, которые начинаются либо с /html/body (в пространстве имен XHTML), либо с одного из нескольких элементов в определенном пространстве имен.Фактически я хочу удалить /html/body и просто вернуть содержимое тела ИЛИ весь корневой элемент в пространстве имен.
Решение
В XPath 2.0 и XQuery 1.0 вы можете проверить префикс пространства имен, используя команду префиксы в области видимости() функция в предикате.например
//*[in-scope-prefixes(.)='html']
Если вы не можете использовать версию 2, в XPath 1.0 вы можете использовать пространство имен-uri() функция для проверки самого пространства имен.например
//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
Другие советы
Выражение XPath, которое мне нужно:
/html:html/html:body/node()|/foo:*
Где префикс «html» сопоставляется с пространством имен XHTML, а префикс «foo» сопоставляется с моим целевым пространством имен.