jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christoph Kiehl (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-579) "Digit" name support missing in XPath AQT parser.
Date Mon, 25 Sep 2006 08:36:52 GMT
    [ http://issues.apache.org/jira/browse/JCR-579?page=comments#action_12437484 ] 
            
Christoph Kiehl commented on JCR-579:
-------------------------------------

We ran into this problem as well. The problem is that digits are not allowed as a first character
of an element name by xml spec (http://www.w3.org/TR/REC-xml-names/#NT-QName). This means
you can't create _xpath_ queries for a path that contains an element starting with a digit.
But you can execute a _sql_ query on such a path. I think the the JCR spec should have used
the same definition for element names as the xml spec.

> "Digit" name support missing in XPath AQT parser.
> -------------------------------------------------
>
>                 Key: JCR-579
>                 URL: http://issues.apache.org/jira/browse/JCR-579
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: query
>    Affects Versions: 1.0.1
>            Reporter: Eugene Porubaev
>            Priority: Critical
>
> INTRODUCTION:
> According to JSR-170-ch.4.6"Path Syntax" a syntactically valid path is:
> ...
> name ::= [prefix ':'] simplename
> simplename ::= onecharsimplename | twocharsimplename | threeormorecharname
> onecharsimplename ::= /* Any Unicode character except: '.', '/', ':', '[', ']', '*',
''', '"', '|' or any whitespace character */
> ...
> So, any "digit' name (e.g. "my:777") sould be valid.
> WHAT I DO:
> import org.apache.jackrabbit.core.query.*;
> ...
> String q = "/jcr:root / 2 / ( *, mytype)";
> QueryParser.parse( q, "xpath", nsRegistry);
> WHAT I EXPECT TO HAVE:
> Succesfully parsed query.
> WHAT I GET:
> javax.jcr.query.InvalidQueryException: Parse error: data is not a RelationQueryNode
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:434)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createPathQueryNode(XPathQueryBuilder.java:612)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:317)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.<init>(XPathQueryBuilder.java:244)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createQuery(XPathQueryBuilder.java:275)
> 	at org.apache.jackrabbit.core.query.xpath.QueryBuilder.createQueryTree(QueryBuilder.java:36)
> 	at org.apache.jackrabbit.core.query.QueryParser.parse(QueryParser.java:53)
> 	...
> P.S. The same result we have on "/jcr:root /( 2, mytype)" XPath query parsing:
> javax.jcr.query.InvalidQueryException: Parse error: data is not a RelationQueryNode
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:434)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:469)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.childrenAccept(SimpleNode.java:88)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createPathQueryNode(XPathQueryBuilder.java:612)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.visit(XPathQueryBuilder.java:317)
> 	at org.apache.jackrabbit.core.query.xpath.SimpleNode.jjtAccept(SimpleNode.java:79)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.<init>(XPathQueryBuilder.java:244)
> 	at org.apache.jackrabbit.core.query.xpath.XPathQueryBuilder.createQuery(XPathQueryBuilder.java:275)
> 	at org.apache.jackrabbit.core.query.xpath.QueryBuilder.createQueryTree(QueryBuilder.java:36)
> 	at org.apache.jackrabbit.core.query.QueryParser.parse(QueryParser.java:53)
> 	...

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message