使用XPath在命名空间中选择元素

Cra*_*ker 12 xml xpath namespaces

我想选择具有给定命名空间(前缀)的文档中最顶层的元素.

更具体地说:我有XML文档,它们以/ html/body(在XHTML命名空间中)开头,或者以特定命名空间中的几个元素之一开头.我实际上想要删除/ html/body并返回正文内容或整个根命名空间元素.

Jim*_*ger 9

在XPath 2.0和XQuery 1.0中,您可以使用谓词中的in-scope-prefixes()函数来测试命名空间前缀.例如

//*[in-scope-prefixes(.)='html']
Run Code Online (Sandbox Code Playgroud)

如果你不能使用v2,在XPath 1.0中你可以使用namespace-uri()函数来测试命名空间本身.例如

//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
Run Code Online (Sandbox Code Playgroud)