1

好吧,如果我有例如:

<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)?

4

2 回答 2

2

使用 XPath 轴preceding-sibling获取所有前面的兄弟,而不是将结果集限制为最后一个。

(//entry[xs:integer(./@weight)=21]/preceding-sibling::*)[last()]

根据您的数据集和 XQuery 实现,反过来可能会更快:找到<entry/>满足条件的元素。

//entry[./following-sibling::*[1][xs:integer(./@weight)=8]]
于 2012-12-25T22:26:56.877 回答
2
//entry[xs:integer(@weight)=21]/preceding-sibling::entry[1]

前面的兄弟轴倒数。[1]表示前一个兄弟姐妹。

于 2012-12-25T22:32:41.200 回答