我在代码中选择特定标题后的div时遇到了问题:
<div>
<h2>Section 1</h2>
<div>Item 1</div>
<div>Item 2</div>
<h2>Section 2</h2>
<div>Item 3</div>
<div>Item 4</div>
<div>Item 5</div>
</div>
我试图以某种方式使用previous-sibling来获取节点:
//div/div[preceding-sibling::h2[1][position()=1]]
我需要在位置1上拥有最近的h2兄弟姐妹的所有div,但我仍然得到所有5个项目。
你能告诉我我做错了什么吗?
位置1的示例输出(第1部分):
<div>Item 1</div>
<div>Item 2</div>
位置2的示例输出(第2节):
<div>Item 3</div>
<div>Item 4</div>
<div>Item 5</div>
答案 0 :(得分:1)
这可能是一件棘手的事情,但您可以使用的一种方法是count()
:
//div/div[count(preceding-sibling::h2) = 1]
position()
尝试无效的原因是相对于当前选择评估了position()
。使用preceding-sibling::h2[1][position()=1]
,您将选择最近的h2
,然后选择该集合中的第一个节点 。