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も試しました。しかし、これは XPATH 2.0 の機能であり、JackRabbit 2.2.13 ではサポートされていないため、このバージョンの JackRabbit を使用せざるを得ません。

4

0 に答える 0