如何通过 XPath 选择命名空间值

bry*_*mon 4 xml xpath

我正在尝试xmlns:attr使用 XPath 从此 XML获取属性值。我似乎无法得到它。

<a:b xmlns:attr="value">
</a:b>
Run Code Online (Sandbox Code Playgroud)

这是来自根节点。

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

kjh*_*hes 6

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

<b xmlns:attr="value"/>
Run Code Online (Sandbox Code Playgroud)

注意:您选择的名称attr掩盖了一个事实,即在上述 XML 中,attr它不是一个属性,而是一个命名空间前缀

XPath 1.0

使用namespace

/b/namespace::attr
Run Code Online (Sandbox Code Playgroud)

将评估为

value
Run Code Online (Sandbox Code Playgroud)

XPath 2.0

根据XML 路径语言 (XPath) 2.0(第二版)

在 XPath 2.0 版中,名称空间轴已弃用,不需要宿主语言支持。

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

/b/namespace-uri-for-prefix('attr',.)
Run Code Online (Sandbox Code Playgroud)

将评估为

value
Run Code Online (Sandbox Code Playgroud)