Выберите элемент в пространстве имен с помощью XPath

StackOverflow https://stackoverflow.com/questions/112601

  •  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» сопоставляется с моим целевым пространством имен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top