无论属性的名称空间如何,都提取属性值

时间:2014-11-04 20:44:51

标签: xml xpath namespaces

无论属性的命名空间如何(以及属性是否在没有命名空间),如何提取属性的值?

E.g。什么是从文档下面的所有中提取状态值属性的XPath:

<a status='foo'></a>

<a xmlns:x="foo-x" x:status='foo'></a>

<x:a xmlns:x="foo-x" status='foo'></x:a>

<a xmlns="foo-y" status='foo'></a>

XPath /*/@status从上面的所有中获取值'foo',除了属性位于命名空间中的第二个(默认命名空间不适用于我认为的属性)所以在第四种情况下成功获取了值)。我可以在所有情况下使用XPath吗?

尝试/*/@[local-name()='status']失败了:

 net.sf.saxon.trans.XPathException: @ must be followed by a NodeTest

1 个答案:

答案 0 :(得分:1)

@符号后,需要属性名称。您可以将*用于任何:

/*/@*[local-name()='status']
相关问题