提问人:Maya 提问时间:12/10/2021 更新时间:12/10/2021 访问量:39
如何选择带有 xpath 的命名空间定义标签
How can i select the namespace definition tag with an xpath
问:
我有下面的例子:
<?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赞
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 数据模型中,命名空间不是作为属性建模的;它们是一种不同类型的节点。
评论