Jackrabbit - 选择具有最大属性值的节点

时间:2013-12-19 20:06:08

标签: xpath jackrabbit jcr-sql2

假设我有几个带有名为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
    
  3. 我也尝试了 fn:max 这个功能。但AFAIK这是一个XPATH 2.0功能,JackRabbit 2.2.13不支持,我不得不使用这个版本的JackRabbit。

0 个答案:

没有答案