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

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

有帮助吗?

解决方案

在XPath 2.0和XQuery 1.0中,您可以使用范围内前缀()在谓词中起作用。 e.g。

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

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

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

其他提示

我想要的XPath表达式是:

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

“html”的位置前缀映射到XHTML命名空间,而“foo”命名空间。 prefix被映射到我的目标名称空间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top