使用xmlstarlet选择xmlns属性

时间:2013-05-23 17:18:41

标签: xml xpath xml-namespaces xmlstarlet

在xmlstarlet中,如何选择xmlns属性的值?

我试过

xml sel -t -v //@xmlns input.xml

但没有得到任何结果。另一方面

xml sel -t -v //@id input.xml

按预期打印所有ID。我是否需要在xmlns前添加一些命名空间?如果是,那是什么?

1 个答案:

答案 0 :(得分:1)

在XPath数据模型中,属性和命名空间是单独的节点类型。源XML中的名称空间声明成为数据模型中的名称空间节点,而不是属性节点,并且使用命名空间轴而不是属性轴来选择它。在命名空间节点中,名称是名称空间前缀,值是名称空间URI。如果要查找文档中的所有默认(未命名)命名空间节点,则需要//namespace::*[name()='']