Pergunta

Eu quero selecionar o elemento mais alto em um documento que tem um determinado namespace (prefixo).

Mais especificamente: Eu tenho documentos XML que quer começar com / html / corpo (no namespace XHTML) ou com um dos vários elementos em um namespace particular. Eu efetivamente querer retirar / html / corpo e apenas retornar o conteúdo do corpo ou o elemento namespaced toda raiz.

Foi útil?

Solução

Em XPath 2.0 e XQuery 1.0 você pode testar contra o prefixo namespace usando o no escopo-prefixos () função em um predicado. por exemplo.

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

Se você não pode usar v2, em XPath 1.0 pode utilizar a namespace-uri () função para teste contra o próprio namespace. por exemplo.

//*[namespace-uri()='http://www.w3c.org/1999/xhtml']

Outras dicas

A expressão XPath que eu quero é:

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

Quando o prefixo "html" é mapeado para o namespace XHTML, e o prefixo "foo" é mapeado ao meu namespace de destino.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top