我正在尝试创建一个xpath语句,该语句查找包含上下文中与特定类匹配但在其他上下文中不匹配的下一个元素。例如,给定以下xml
<root>
<a id="first" class="x">
<b>
<c id="1" class="y"></c>
</b>
<b>
<c id="2" class="y"></c>
</b>
</a>
<a id="second" class="x">
<c id="3" class="y"></c>
</a>
</root>
从id 1开始,我想在“第一个”实例中找到下一个y类元素,而不是“第二个”实例中的任何内容。我有
//c[@id="1"]/ancestor::*/following-sibling::*[1]//descendant-or-self::*[@class="y"]
但是当我只想要id 2时,这会返回id 2和3的元素。我在stackoverflow上看到了标题为“XPath:限制结果集范围”的帖子,但它似乎解决了一个不同的问题或者我不明白这个解决方案。