Вопрос по namespaces, xml, xpath – Выберите элемент в пространстве имен с XPath

12

Я хочу выбрать самый верхний элемент в документе, который имеет заданное пространство имен (префикс).

Более конкретно: у меня есть XML-документы, которые начинаются либо с / html / body (в пространстве имен XHTML), либо с одного из нескольких элементов в определенном пространстве имен. Я фактически хочу удалить / html / body и просто вернуть содержимое тела ИЛИ весь корневой элемент пространства имен.

В процессе написания своего поста я наткнулся на рабочее решение, поэтому мне принадлежал вопрос сообщества, а затем он опубликовал ответ. Наслаждайтесь! Craig Walker

Ваш Ответ

2   ответа
9

используяв-Scope префиксов () функция в предикате. например

//*[in-scope-prefixes(.)='html']

Если вы не можете использовать v2, в XPath 1.0 вы можете использоватьПространство имен-URI () функция для проверки самого пространства имен. например

//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
должно быть:http://www.w3.org/1999/xhtml
3

Я хочу получить выражение XPath:

/html:html/html:body/node()|/foo:*

Где & quot; html & quot; префикс сопоставляется с пространством имен XHTML, а & quot; foo & quot; префикс сопоставлен с моим целевым пространством имен.

Похожие вопросы