- From: <bugzilla@jessica.w3.org>
- Date: Sun, 13 Jul 2014 22:51:40 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=26324
Bug ID: 26324
Summary: XQuery 3.0's PostfixExpr is not properly represented
in XQueryX 3.0
Product: XPath / XQuery / XSLT
Version: Recommendation
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P2
Component: XQueryX 3.0
Assignee: jim.melton@acm.org
Reporter: jim.melton@acm.org
QA Contact: public-qt-comments@w3.org
In XQuery 3.0, the following expression is apparently valid:
12(1,2)[3]
and is represented by the following BNF:
PathExpr ::= ...
| RelativePathExpr
RelativePathExpr ::= StepExpr
StepExpr ::= PostfixExpr | ...
PostfixExpr ::= PrimaryExpr (Predicate | ArgumentList)*
PrimaryExpr ::= Literal | ...
(Note: I don't claim that I understand why anybody would write such an
expression, but it is apparently valid.)
The expressions is accepted by our syntax checker and produces the following
parse tree:
|START [1:0 - 1:10]
| QueryList [1:0 - 1:10]
| Module [1:0 - 1:10]
| MainModule [1:0 - 1:10]
| Prolog [1:0 - 0:0]
| QueryBody [1:0 - 1:10]
| Expr [1:0 - 1:10]
| PathExpr [1:0 - 1:10]
| PostfixExpr [1:0 - 1:10]
| IntegerLiteral 12 [2:1 - 1:2]
| ArgumentList [2:1 - 1:7]
| Argument [2:3 - 1:4]
| PathExpr [2:3 - 1:4]
| PostfixExpr [2:3 - 1:4]
| IntegerLiteral 1 [2:4 - 1:4]
| Argument [2:5 - 1:6]
| PathExpr [2:5 - 1:6]
| PostfixExpr [2:5 - 1:6]
| IntegerLiteral 2 [2:6 - 1:6]
| Predicate [2:7 - 1:10]
| Expr [2:8 - 1:9]
| PathExpr [2:8 - 1:9]
| PostfixExpr [2:8 - 1:9]
| IntegerLiteral 3 [2:9 - 1:9]
Note particularly the appearance of "PostfixExpr" in the parse tree.
However, in the XQueryX translation produced by the syntax checker, that same
expression transforms to:
<?xml version="1.0"?>
<xqx:module xmlns:xqx="http://www.w3.org/2005/XQueryX"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/XQueryX
http://www.w3.org/2005/XQueryX/xqueryx.xsd">
<xqx:mainModule>
<xqx:queryBody>
<xqx:pathExpr>
<xqx:stepExpr>
<xqx:filterExpr>
<xqx:dynamicFunctionInvocationExpr>
<xqx:functionItem>
<xqx:integerConstantExpr>
<xqx:value>12</xqx:value>
</xqx:integerConstantExpr>
</xqx:functionItem>
<xqx:arguments>
<xqx:integerConstantExpr>
<xqx:value>1</xqx:value>
</xqx:integerConstantExpr>
<xqx:integerConstantExpr>
<xqx:value>2</xqx:value>
</xqx:integerConstantExpr>
</xqx:arguments>
</xqx:dynamicFunctionInvocationExpr>
</xqx:filterExpr>
<xqx:predicates>
<xqx:integerConstantExpr>
<xqx:value>3</xqx:value>
</xqx:integerConstantExpr>
</xqx:predicates>
</xqx:stepExpr>
</xqx:pathExpr>
</xqx:queryBody>
</xqx:mainModule>
</xqx:module>
In this case, please note that the <xqx:functionItem> is an
<xqx:integerConstantExpr> (12) followed by <xqx:arguments> (1 and 2).
The XQueryX 3.0 stylesheet would (does) transform to the original expression:
12(1,2)[3]
But that is more an accident than a planned chain of events.
DOES THE XQUERYX COMMUNITY BELIEVE THAT THIS SHOULD BE "FIXED"? I presume that
the fix would be to permit XQueryX code that looks something like this:
<?xml version="1.0"?>
<xqx:module xmlns:xqx="http://www.w3.org/2005/XQueryX"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2005/XQueryX
http://www.w3.org/2005/XQueryX/xqueryx.xsd">
<xqx:mainModule>
<xqx:queryBody>
<xqx:pathExpr>
<xqx:stepExpr>
<xqx:postfixExpr>
<xqx:integerConstantExpr>
<xqx:value>12</xqx:value>
</xqx:integerConstantExpr>
<xqx:arguments>
<xqx:integerConstantExpr>
<xqx:value>1</xqx:value>
</xqx:integerConstantExpr>
<xqx:integerConstantExpr>
<xqx:value>2</xqx:value>
</xqx:integerConstantExpr>
</xqx:arguments>
</xqx:postfixExpr>
<xqx:predicates>
<xqx:integerConstantExpr>
<xqx:value>3</xqx:value>
</xqx:integerConstantExpr>
</xqx:predicates>
</xqx:stepExpr>
</xqx:pathExpr>
</xqx:queryBody>
</xqx:mainModule>
</xqx:module>
(Note the use of <xqx:postfixExpr>, which does not appear at all in the XQueryX
3.0 schema or stylesheet.)
I believe that I have no choice but to make this kind of fix in XQueryX 3.1
because of the new alternatives in the production for PostfixExpr, and I
*think* (I'm still working on it) I can do so with full XQueryX 3.0
compatibility with or without "fixing" this problem in XQueryX 3.0.
Guidance, please!!
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Sunday, 13 July 2014 22:51:42 UTC