You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Stanislav Orlenko <or...@gmail.com> on 2015/03/31 15:13:44 UTC
XPath query fails when "as" is a part of a path
XPath query: /a/b/as
throws an error:
{
- results: [ ],
- total: 0,
- success: false,
- time: 0,
- errorMessage: "Encountered "as" at line 1, column 16. Was expecting
one of: <IntegerLiteral> ... <DecimalLiteral> ... <DoubleLiteral> ...
<StringLiteral> ... "<?" ... "<?" ... <AxisChild> ... <AxisDescendant> ...
<AxisParent> ... <AxisAttribute> ... <AxisSelf> ... <AxisDescendantOrSelf>
... <AxisAncestor> ... <AxisFollowingSibling> ... <AxisPrecedingSibling>
... <AxisFollowing> ... <AxisPreceding> ... <AxisAncestorOrSelf> ... "$"
... <ElementType> ... <AttributeType> ... <SchemaElementType> ...
<SchemaAttributeType> ... <OrderedOpen> ... <UnorderedOpen> ...
<ElementQNameLbrace> ... <AttributeQNameLbrace> ... <PINCNameLbrace> ...
<PILbrace> ... <CommentLbrace> ... <ElementLbrace> ... <AttributeLbrace>
... <TextLbrace> ... "*" ... <NCNameColonStar> ... <StarColonNCName> ...
"(" ... "@" ... <DocumentLpar> ... <DocumentLparForKindTest> ...
<DocumentLbrace> ... <NodeLpar> ... <CommentLpar> ... <TextLpar> ...
<ProcessingInstructionLpar> ... <ElementTypeForKindTest> ...
<ElementTypeForDocumentTest> ... <AttributeTypeForKindTest> ...
<SchemaElementTypeForKindTest> ... <SchemaElementTypeForDocumentTest> ...
<SchemaAttributeTypeForKindTest> ... <ProcessingInstructionLparForKindTest>
... <TextLparForKindTest> ... <CommentLparForKindTest> ...
<NodeLparForKindTest> ... "." ... ".." ... <QNameLpar> ... "<" ... "<" ...
"<!--" ... "<!--" ... <QName> ... for statement: for $v in /a/b/as return
$v"
}
That's jackrabbit 2.6.2 in Adobe CQ 5.6.1
If I understood correctly a XPath parser treats "as" as a reserved word. In
jackrabbit code I found this:
statement = "for $v in " + statement + " return $v";
// get parser
XPath parser;
synchronized (parsers) {
parser = (XPath) parsers.get(resolver);
if (parser == null) {
parser = new XPath(new StringReader(statement));
parsers.put(resolver, parser);
}
}
http://grepcode.com/file/repo1.maven.org/maven2/org.apache.jackrabbit/jackrabbit-spi-commons/2.6.2/org/apache/jackrabbit/spi/commons/query/xpath/XPathQueryBuilder.java#285
In linux I've tried to execute the same XPath code using xmllint and it
works:
$ xmllint --xpath '/a/b/as' test.html
<as>
as content
</as>
Any ideas what's wrong with jackrabbit when "as" is part of a path?
Adobe guy has confirmed the problem but hasn't provided any solutions.
Except using SQL-2 if a path contains "/as"
Thanks