On Thu, May 7, 2009 at 9:27 PM, hsp_ <[email protected]> wrote:
>
> Hi;
> How the xpath could help me in the following case:
> I have to retrieve 3 levels of path below a relative path, for example:
>
> A
> |_B
> |_C
>   |_D
>      |_E
>      |_F
>         |_G
>
> starting in /A, I need to retrieve the nodes:
> /A/B
> /A/C
> /A/C/D
> /A/C/D/E
> /A/C/D/F
>
> (not /A/C/D/F/G and the other that would exists deeper)
>
> Can I do this with xpath?
> With sql I know how, but I need this in xpath.

This is not possible with JCR Xpath. You have the descendant-or-self
axis (//), which returns all descendants up to infinite depth, and
there is no depth-checking function. Doing /jcr:root/A//* gives you
everything in your tree.

However, you could mark your nodes by certain properties. This of
course depends on the semantics of your hierarchy and data, but there
must be some reason behind the 3 levels of depth, and this could also
be encoded in the nodes itself. Since property lookup is very fast
(faster than hierarchical lookups in the Lucene search index
implementation of Jackrabbit), I'd recommend this anyway:

/jcr:root/A//*...@someproperty = 'mycategory']

Regards,
Alex

-- 
Alexander Klimetschek
[email protected]

Reply via email to