如何使用 xpath 选择名称空间定义标记
Posted
技术标签:
【中文标题】如何使用 xpath 选择名称空间定义标记【英文标题】:How can i select the namespace definition tag with an xpath 【发布时间】:2022-01-15 04:42:34 【问题描述】:我有下面的例子:
<?xml version="1.0" encoding="UTF-8"?>
<my:root xmlns:my="http://www.example.com/mynamespace">
<my:child name="Sid">
<my:grandchild name="Sue">
<my:greatgrandchild name="Fred" />
</my:grandchild>
</my:child>
</my:root>
我需要使用 xpath 选择属性 xmlns:my 但它不起作用。 有人可以请教吗?
谢谢!
【问题讨论】:
【参考方案1】:对于 XPath 1.0(可能还有一些供应商在以后的版本中仍然支持它),您可以使用 namespace::
轴:
/*/namespace::my
或
/*/namespace::*[name()='my']
对于 XPath 2.0 及更高版本,您可以使用 fn:namespace-uri-for-prefix()
和 fn:in-scope-prefixes()
函数:
fn:namespace-uri-for-prefix("my", /*)
【讨论】:
另请注意,这会报告特定元素范围内的所有命名空间,包括在祖先元素上声明的命名空间:它不限于在相关元素上实际声明的命名空间。而在 XPath 数据模型中,命名空间没有被建模为属性;它们是不同类型的节点。以上是关于如何使用 xpath 选择名称空间定义标记的主要内容,如果未能解决你的问题,请参考以下文章