选择同一级别上两个节点之间的所有元素

时间:2012-01-21 20:25:51

标签: xml xpath

...
<h>unique-1</h>
<a>data</a>
<b>data</b>
<a>data</a>
<h>unique-2</h>
...

我需要两个h个节点之间的所有数据。我可以使用h指向//h[.='unique-1']节点但无法找到如何选择<h>unique-1</h><h>unique-2</h>

之间所有节点的参考

1 个答案:

答案 0 :(得分:2)

在XPath 2.0中,您可以将intersect运算符与following-siblingpreceding-sibling轴结合使用:

          //h[.='unique-1']/following-sibling::*
intersect //h[.='unique-2']/preceding-sibling::*

在XPath 1.0中,您可以使用“Kaysian intersection”模拟intersect运算符:

//h[.='unique-1']/following-sibling::*[
  count(.|//h[.='unique-2']/preceding-sibling::*)
  = count(//h[.='unique-2']/preceding-sibling::*)
]