12

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

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

4

2 回答 2

10

在 XPath 2.0 和 XQuery 1.0 中,您可以使用谓词中的in-scope-prefixes()函数针对名称空间前缀进行测试。例如

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

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

//*[namespace-uri()='http://www.w3c.org/1999/xhtml']
于 2008-09-22T03:54:45.997 回答
3

我想要的 XPath 表达式是:

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

其中“html”前缀映射到 XHTML 命名空间,而“foo”前缀映射到我的目标命名空间。

于 2008-09-22T00:00:46.323 回答