jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexander Klimetschek (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (JCR-2797) Xpath: pure descendant-or-self axis does not work
Date Thu, 21 Oct 2010 19:20:15 GMT

    [ https://issues.apache.org/jira/browse/JCR-2797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12923575#action_12923575
] 

Alexander Klimetschek edited comment on JCR-2797 at 10/21/10 3:18 PM:
----------------------------------------------------------------------

Ok, // is actually /descendant-or-self::node()/, so this forces a child step at the end, that's
why //node() doesn't work.

Simply /jcr:root/content/descendant-or-self::node() should do it (afaiu the Xpath 2.0 specification).
For this Jackrabbit returns only the direct child nodes of /content, but not /content itself
nor any sub nodes below the children (eg. /content/child/sub/child etc.).

And according to the JCR spec, only the abbreviated form "//" is supported, but not the literal
"descendant-or-self::" (or "node()" KindTest) anyway.

Sad outcome, should have been supported in JCR, quite useful to support the start point of
the search tree as well. It works "by accident" in cases where the node's metadata is stored
under a jcr:content node (such as for nt:file), but these are not all cases.

Closing for now, maybe coming up with an improvement request.

      was (Author: alexander.klimetschek):
    Ok, // is actually /descendant-or-self::node()/, so this forces a child step at the end,
that's why //node() doesn't work.

Simply /jcr:root/content/descendant-or-self::node() should do it (afaiu the Xpath 2.0 specification).
For this Jackrabbit returns only the direct child nodes of /content, but not /content itself
nor any sub nodes below the children (eg. /content/child/sub/child etc.).
  
> Xpath: pure descendant-or-self axis does not work
> -------------------------------------------------
>
>                 Key: JCR-2797
>                 URL: https://issues.apache.org/jira/browse/JCR-2797
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core, xpath
>            Reporter: Alexander Klimetschek
>
> A pure descendant-or-self axis "//" does not work, albeit it is defined in JCR 1.0, section
6.6.4.6. Running this query 
> /jcr:root/content// 
> returns an error: 
> Encountered "$" at line 1, column 38. Was expecting one of: "or" ... "and" ... "div"
... "idiv" ... "mod" ... "*" ... "return" ... "to" ... "where" ... "intersect" ... "union"
... "except" ... ... ... "/" ... "//" ... "=" ... "is" ... "!=" ... "<=" ... "<<"
... ">=" ... ">>" ... "eq" ... "ne" ... "gt" ... "ge" ... "lt" ... "le" ... "<"
... ">" ... "-" ... "+" ... "|" ... "[" ... ... ... ... ... "," ... ... ... for statement:
for $v in /jcr:root/content// return $v 
> It only works in combination with another location step, like /jcr:root/content//* or
/jcr:root/content//test. Tested this on a 2.2 snapshot, but I think it was actually never
supported so far. 
> The use case comes up when searching for a property in a subtree of a certain node, where
you want to include a property on that node directly as well, eg. /jcr:root/content//[@my:prop
= 'value']

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message