jackrabbit-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marcel Reutegger <marcel.reuteg...@gmx.net>
Subject Re: Descendant or self axis problem - a known issue?
Date Thu, 09 Apr 2009 14:42:25 GMT
Hi,

On Thu, Apr 9, 2009 at 16:06, Benjamin Brown
<benjamin.brown@thisisnumero.com> wrote:
> Hi,
>
> I've been working with an xpath query recently that's made me think that the descendant
or self axis seems to be broken (JCR 1.4)
>
> I have a tree of nodes like the following (written by hand as I don't have the actual
output readily available):
>
> cms:Views/cms:viewObject/cms:viewObject
> cms:Views/cms:viewObject/cms:viewObject[2]
> cms:Views/cms:viewObject/cms:viewObject[3]/cms:viewObject
> cms:Views/cms:viewObject/cms:viewObject[3]/cms:viewObject[2]
>
> Where all cms:viewObject nodes contain multiple references to other (non view) nodes.
>
> In order retrieve ALL the references under for cms:Views/cms:viewObject
>
> I think I can query like this (truncated as it's a long query)
> /jcr:root/cms:Views/cms:viewObject//jcr:deref(@cms:reference, '*')//element(cms:content,
>
> This query should (I believe) retrieve the referenced nodes for all of the view nodes
(6) listed above, inclusive of the reference of the node it was called on (i.e. self).
>
> I find that it is omitting the reference on the self node cms:Views/cms:viewObject and
returns only the nodes referenced on the descendents of the specified view node - is this
expected behaviour/a known bug and is there a work around apart from doing two queries?

In XPath // is the abbreviated syntax for /descendant-or-self::node()/
(see: http://www.w3.org/TR/xpath20/#abbrev), which means your query is
translated into:

/jcr:root/cms:Views/cms:viewObject/descendant-or-self::node()/jcr:deref(@cms:reference,
'*')/descendant-or-self::node()/element(cms:content,

this will never select /cms:Views/cms:viewObject

why don't you just select all nodes name cms:viewObject and then
dereference them?

//cms:viewObject/jcr:deref(....

regards
 marcel

> I can provide more detailed output if necessary.
>
> Thanks,
>
> Benjamin
>

Mime
View raw message