【问题标题】:XPath to check the namespace a prefix is bound toXPath 检查前缀绑定到的命名空间
【发布时间】:2015-02-06 17:33:56
【问题描述】:

假设我有以下 XML 文件:

<a xmlns:foo="http://foo"></a>   

我需要检查前缀foo 是否绑定到http://foo。其中 not bound 可以指示所述前缀根本不存在或绑定到某个其他名称空间 URI。 我已经有一个库,它采用 Document 对象和 XPath 表达式并返回存在于该 XPath 中的 List (可能为空)Nodes。

那么,什么是一个表达式,它会检查绑定到命名空间http://foo 的最顶层元素(文档元素)中是否存在前缀foo,并且将为上述 XML 生成一个节点和零以下 XML 的节点:

<a xmlns:fooX="http://foo"></a>

< xmlns:foo="http://fooX"></a>

作为第一步,我尝试使用以下方法获取该属性的值:

/*[@*[local-name()='foo']]

...但似乎前缀绑定属性的处理方式与“普通”属性不同。

【问题讨论】:

    标签: java xpath


    【解决方案1】:

    如果你想用 XPath 来做,那么你必须使用命名空间轴:/*[namespace::foo[. = 'http://foo']]。 DOM Level 3 可能提供将命名空间声明视为属性和解析前缀的不同方法,请参阅http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-02
      • 1970-01-01
      相关资源
      最近更新 更多