xml - 为什么命名空间限定的节点没有 XPath 语法?

标签 xml xpath namespaces xml-namespaces

XML 文档中的某些节点具有 namespace ,使用已定义的前缀指定。

可以在 XPath 1.0 中指定 local-name() 从而忽略命名空间。

但是,我想让 XPath 的编写者能够使用节点的完整 namespace 限定名称作为标识符来查找节点。

推荐的方法是在调用代码(在我的例子中是 Java)中添加 namespace 声明。但这意味着编写 Xpath 的人没有使用命名空间的能力!

我们如何使用纯 XPath 通过完全限定名称查找节点?

最佳答案

不确定“作为标识符”是什么意思。

How do we find nodes by their fully qualified names using pure XPath?

在 XPath 1.0 中,通过使用 local-name() 和 namespace-uri() ,例如

"*[local-name() = 'foo' and namespace-uri() = 'http://my.org/ns/2.0']"

在 XPath 2.0 中,有一组更丰富的与 namespace 相关的函数,例如namespace-uri-from-QName() .但我不确定他们是否会根据您的需要改进上述内容。

关于xml - 为什么命名空间限定的节点没有 XPath 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7056707/

相关文章:

PHP命名空间不起作用

java - Android抽屉导航点击事件问题

xpath - 在 XPath 中包含 boolean 表达式的正确语法;特别不是 & 和

c# - C# 中的命名空间作用域

java - 如何以最少的等待时间加速 Java Selenium Script

xpath - 如何通过 xmlXPathNodeEval() 将 XPath 限制为子树?

PhpStorm 和 Symfony 3 - 对于某些包,找不到命名空间

Xml 命名空间 - Coldfusion

xml - 在 SAS 中读取 XML 数据时设置数据类型

java - 使用自定义验证根据 XSD 验证 XML