1

我有这个 .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”命名空间中的元素。我怎么才能得到它?在存在数据库中,“命名空间::”轴不再起作用

4

2 回答 2

0

尝试在谓词中使用in-scope-prefixes()函数:

//*[in-scope-prefixes(.)='h']

于 2013-11-09T16:42:34.587 回答
0

在评论中,您展示了一个解析来自的返回值的解决方案name()

//*[substring-before(name(), ":")='h']

有一种更简单的方法来获取映射到h前缀的命名空间中的所有元素:

//h:*

注意:当我第一次测试这个时,我正在取回文档中的所有元素。那是因为您的两个前缀都映射到同一个命名空间:

xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3.org/TR/html4/"

你也应该解决这个问题。

于 2014-01-17T19:20:36.177 回答