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