如何选择带有 xpath 的命名空间定义标签

How can i select the namespace definition tag with an xpath

提问人:Maya 提问时间:12/10/2021 更新时间:12/10/2021 访问量:39

问:

我有下面的例子:

<?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,但它不起作用。 有人可以建议吗?

谢谢!

XML XPath 命名空间

评论


答:

1赞 Mads Hansen 12/10/2021 #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", /*)

评论

0赞 Michael Kay 12/10/2021
另请注意,这会报告特定元素范围内的所有命名空间,包括在祖先元素上声明的命名空间:它不限于在相关元素上实际声明的命名空间。在 XPath 数据模型中,命名空间不是作为属性建模的;它们是一种不同类型的节点。