0

假设我有几个文件节点,其属性名为 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 来做到这一点?

我尝试了以下查询但没有成功:

  1. 返回提供的 jcr:uuid 下的所有文件节点

    /jcr:root/content/*[jcr:uuid='9b3d22fc-2354-49a6-afd0-9b672ae5a553']//file[not(../file/foo > foo)] order by @score
    
  2. 引发异常

    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。

4

0 回答 0