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

12

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

更具体地说:我有一些以/html/body(在XHTML命名空间中)开头或以特定命名空间中的多个元素之一开头的XML文档。 我希望有效地剥离/html/body并只返回body内容或整个根命名空间元素。


在撰写我的帖子过程中,我偶然发现了一个有效的解决方案,因此我将问题共享给了社区并发布了答案。祝您愉快! - Craig Walker
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']

3
我需要的XPath表达式是:
/html:html/html:body/node()|/foo:*

当"html"前缀被映射到XHTML命名空间,而"foo"前缀被映射到我的目标命名空间时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接