【问题标题】:How can i select the namespace definition tag with an xpath如何使用 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 但它不起作用。 有人可以请教吗?

谢谢!

【问题讨论】:

    标签: xml xpath namespaces


    【解决方案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 数据模型中,命名空间没有被建模为属性;它们是不同类型的节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2014-09-13
    • 2021-11-06
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多