假设我们的X
ML
文档如下所示:
<record id="1" date="2020-01-01"/>
<record id="2" date="2020-02-15"/>
<record id="1" date="2020-03-20"/>
<record id="3" date="2020-04-05"/>
<record id="2" date="2020-05-10"/>
<record id="1" date="2020-06-25"/>
</root>
可以使用XPath 3.0的group-by
函数
来查找每个非唯一ID的最新日期。示例代码如下:
for $id in distinct-values(//record/@id)[count(//record[@id=current()]) > 1]
return
for $record in //record[@id=$id]
return xs:date($record/@date)
在此代码中,我们首先使用distinct-values
函数
查找所有出现次数大于1的ID。然后,我们使用max
函数
查找每个ID的最新日期,并通过for循环遍历相应的记录。最后,我们在每个ID和最新日期上返回一个序列。
以上代码将返回以下结果:
1 2020-06-25
2 2020-05-10
这意味着ID为1的记录的最新日期是2020年6月25日,而ID为2的记录的最新日期为2020年5月10日。