0

XPath (1.0) 能否用于返回 XML 文档中的命名空间节点?

注意:我不是要求具有给定名称空间的节点,而是名称空间节点本身。所以不是:

//node()[namespace-uri()='http://a.b']
4

2 回答 2

3

如果实现了命名空间轴(Firefox/Mozilla 拒绝这样做),则为//namespace::node()您提供所有命名空间节点。但请注意,XSLT/XPath 数据模型中的名称空间节点与 XML 文档中的名称空间声明属性不同,带有标记

<root xmlns="http://example.com/ns">
  <foo>
    <bar>baz</bar>
  </foo>
</root>

所有三个元素都有两个在范围内的命名空间节点,一个在根元素上声明的默认节点和一个用于命名空间的内置节点xml

于 2012-06-25T12:06:48.160 回答
1

namespace::XPath 1.0 中有一个轴,所以你可以。在 2.0 中,它已被弃用,仅适用于兼容模式。但是,您可以查询范围内的所有命名空间绑定/前缀。

依赖实际的命名空间节点通常不是一个好主意,尽管有时这是不可避免的。请注意,namespace::轴包含该元素范围内的所有命名空间节点。要查找绑定在该特定元素上的那些,您必须将节点列表与父元素范围内的命名空间进行比较。

于 2012-06-25T12:04:18.807 回答