我有这个.xml文件
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3.org/TR/html4/">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:tr>
<f:td>Red</f:td>
<f:td>Yellow</f:td>
</f:tr>
</f:table>
</root>
我如何才能获得具有指定命名空间的元素? 例如,我想只检索'h'命名空间中的元素。 我怎么才能得到它?在exists-db中,'namespace ::'轴不再有效
答案 0 :(得分:0)
尝试在谓词中使用in-scope-prefixes()函数:
//*[in-scope-prefixes(.)='h']
答案 1 :(得分:0)
在评论中,您会显示一个解析来自name()
的返回值的解决方案:
//*[substring-before(name(), ":")='h']
有一种更简单的方法可以获取映射到h
前缀的名称空间中的所有元素:
//h:*
注意:当我第一次测试时,我正在返回文档中的所有元素。那是因为你的两个前缀都映射到相同的命名空间:
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3.org/TR/html4/"
你也应该解决这个问题。