如何通过 XPath select 命名空间值

How to select namespace value via XPath

我正在尝试使用 XPath 从这个 XML 中获取 xmlns:attr 属性值。我好像听不懂。

<a:b xmlns:attr="value">
</a:b>

这是来自根节点。

我几乎尝试了所有组合,但似乎找不到任何有效的方法。

抛开未声明的 a: 命名空间的干扰,让我们使用这个例子:

<b xmlns:attr="value"/>

注意:您选择的 attr 掩盖了上述 XML、attr 不是 [=44] 的事实=]属性而是一个命名空间前缀.

XPath 1.0

使用namespace axis:

/b/namespace::attr

将评估为

value

XPath 2.0

根据XML Path Language (XPath) 2.0 (Second Edition)

In XPath Version 2.0, the namespace axis is deprecated and need not be supported by a host language.

相反,使用 namespace-uri-for-prefix():

/b/namespace-uri-for-prefix('attr',.)

将评估为

value