好吧,如果我有例如:
<entries>
...
<entry id="34" weight="83">...</entry>
<entry id="35" weight="21">...</entry>
...
</entries>
出于任何原因,我得到了 ID 为 35: 的条目let $entry := //entry[xs:integer(./@weight)=21]
。我怎样才能简单地获取上一个条目(ID 34)?
使用 XPath 轴preceding-sibling
获取所有前面的兄弟,而不是将结果集限制为最后一个。
(//entry[xs:integer(./@weight)=21]/preceding-sibling::*)[last()]
根据您的数据集和 XQuery 实现,反过来可能会更快:找到<entry/>
满足条件的元素。
//entry[./following-sibling::*[1][xs:integer(./@weight)=8]]
//entry[xs:integer(@weight)=21]/preceding-sibling::entry[1]
前面的兄弟轴倒数。[1]
表示前一个兄弟姐妹。