假设我有几个文件节点,其属性名为 foo。在 Jackrabbit 中,我用来通过属性值查找这些节点的 xpath 查询如下:
/jcr:root/content/*[jcr:uuid='9b3d22fc-2354-49a6-afd0-9b672ae5a553']//file[foo = 10] order by @score
我的存储库作为 XML 的过度简化和原始表示如下所示:
<content>
<formNode jcrUuid="9b3d22fc-2354-49a6-afd0-9b672ae5a553">
<year>
<month>
<day>
<hour>
<min>
<file foo="4"></file>
<file foo="10"></file>
</min>
</hour>
</day>
<day>
<hour>
<min>
<file foo="10"></file>
</min>
<min>
<file foo="5"></file>
</min>
</hour>
<hour>
<min>
<file foo="6"></file>
</min>
</hour>
</day>
</month>
</year>
</formNode>
</content>
现在。如何找到最大值为 foo 的所有文件节点?有谁知道如何通过使用 xpath 或 JCR_SQL2 来做到这一点?
我尝试了以下查询但没有成功:
返回提供的 jcr:uuid 下的所有文件节点
/jcr:root/content/*[jcr:uuid='9b3d22fc-2354-49a6-afd0-9b672ae5a553']//file[not(../file/foo > foo)] order by @score
引发异常
jcr:root/content/*[jcr:uuid='9b3d22fc-2354-49a6-afd0-9b672ae5a553']//file[not(//file/foo > foo)] order by @score
例外:
javax.jcr.query.InvalidQueryException: Unsupported root level query node: org.apache.jackrabbit.spi.commons.query.RelationQueryNode@8fedc
我也试过函数fn:max。但是 AFAIK 这是一个 XPATH 2.0 功能,JackRabbit 2.2.13 不支持,我被迫使用这个版本的 JackRabbit。