- From: <bugzilla@wiggum.w3.org>
- Date: Mon, 10 Sep 2007 19:16:21 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=5028 Summary: [UPD] stylesheet needs to generate more parenthesis Product: XPath / XQuery / XSLT Version: Last Call drafts Platform: PC OS/Version: Windows XP Status: NEW Severity: normal Priority: P2 Component: Update Facility AssignedTo: jim.melton@acm.org ReportedBy: andrew.eisenberg@us.ibm.com QAContact: public-qt-comments@w3.org I believe that the stylesheet shown in E.2 Stylesheet and provided in http://www.w3.org/2007/xquery-update-10/xquery-update-10-xqueryx.xsl must be changed to generate parenthesis around the new updating and non-updating expressions. The following query will soon appear in the XQuery Update Test Suite: (: Name: id-other-expr-031 :) (: Description: Evaluates usage of an non updating expression (transform) as part of a sequence expression (except operator). :) (: insert-start :) declare variable $input-context external; (: insert-end :) let $var1 := $input-context/works[1]/employee[1] let $var2 := $input-context/works[1]/employee[2] return (copy $newVar := $var1 modify delete node $newVar/hours[1] return $newVar) except (copy $newVar := $var2 modify delete node $newVar/hours[1] return $newVar) The XQueryX that corresponds to this query contains the following fragment: <xqx:returnClause> <xqx:exceptOp> <xqx:firstOperand> <xqxuf:transformExpr> ... </xqxuf:transformExpr> </xqx:firstOperand> <xqx:secondOperand> <xqxuf:transformExpr> ... </xqxuf:transformExpr> </xqx:secondOperand> </xqx:exceptOp> </xqx:returnClause> This correctly reflects the return of the except with two operands, each of which is a transform expression. I'll place the complete XQueryX document at the end of this report. The XQuery that is generated from this XQueryX is: declare variable $input-context external ; ( let $var1:=$input-context/child::works[1]/child::employee[1] let $var2:=$input-context/child::works[1]/child::employee[2] return (copy $newVar := $var1 modify delete nodes $newVar/child::hours[1] return $newVar except copy $newVar := $var2 modify delete nodes $newVar/child::hours[1] return $newVar) ) This query raises a parse error: Encountered "$" at line 7, column 30. Was expecting one of: ... Fyi, I raised a similar issue for XQueryX some time ago in Bug #3333. The complete XQueryX document that I referred to earlier is: <?xml version="1.0"?> <xqx:module xmlns:xqx="http://www.w3.org/2005/XQueryX" xmlns:xqxuf="http://www.w3.org/2007/xquery-update-10" 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 http://www.w3.org/2007/xquery-update-10 http://www.w3.org/2007/xquery-update-10/xquery-update-10-xqueryx.xsd"> <xqx:mainModule> <xqx:prolog> <xqx:varDecl> <xqx:varName>input-context</xqx:varName> <xqx:external/> </xqx:varDecl> </xqx:prolog> <xqx:queryBody> <xqx:flworExpr> <xqx:letClause> <xqx:letClauseItem> <xqx:typedVariableBinding> <xqx:varName>var1</xqx:varName> </xqx:typedVariableBinding> <xqx:letExpr> <xqx:pathExpr> <xqx:stepExpr> <xqx:filterExpr> <xqx:varRef> <xqx:name>input-context</xqx:name> </xqx:varRef> </xqx:filterExpr> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>works</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>employee</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> </xqx:pathExpr> </xqx:letExpr> </xqx:letClauseItem> </xqx:letClause> <xqx:letClause> <xqx:letClauseItem> <xqx:typedVariableBinding> <xqx:varName>var2</xqx:varName> </xqx:typedVariableBinding> <xqx:letExpr> <xqx:pathExpr> <xqx:stepExpr> <xqx:filterExpr> <xqx:varRef> <xqx:name>input-context</xqx:name> </xqx:varRef> </xqx:filterExpr> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>works</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>employee</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>2</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> </xqx:pathExpr> </xqx:letExpr> </xqx:letClauseItem> </xqx:letClause> <xqx:returnClause> <xqx:exceptOp> <xqx:firstOperand> <xqxuf:transformExpr> <xqxuf:transformCopies> <xqxuf:transformCopy> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> <xqxuf:copySource> <xqx:varRef> <xqx:name>var1</xqx:name> </xqx:varRef> </xqxuf:copySource> </xqxuf:transformCopy> </xqxuf:transformCopies> <xqxuf:modifyExpr> <xqxuf:deleteExpr> <xqxuf:targetExpr> <xqx:pathExpr> <xqx:stepExpr> <xqx:filterExpr> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> </xqx:filterExpr> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>hours</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> </xqx:pathExpr> </xqxuf:targetExpr> </xqxuf:deleteExpr> </xqxuf:modifyExpr> <xqxuf:returnExpr> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> </xqxuf:returnExpr> </xqxuf:transformExpr> </xqx:firstOperand> <xqx:secondOperand> <xqxuf:transformExpr> <xqxuf:transformCopies> <xqxuf:transformCopy> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> <xqxuf:copySource> <xqx:varRef> <xqx:name>var2</xqx:name> </xqx:varRef> </xqxuf:copySource> </xqxuf:transformCopy> </xqxuf:transformCopies> <xqxuf:modifyExpr> <xqxuf:deleteExpr> <xqxuf:targetExpr> <xqx:pathExpr> <xqx:stepExpr> <xqx:filterExpr> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> </xqx:filterExpr> </xqx:stepExpr> <xqx:stepExpr> <xqx:xpathAxis>child</xqx:xpathAxis> <xqx:nameTest>hours</xqx:nameTest> <xqx:predicates> <xqx:integerConstantExpr> <xqx:value>1</xqx:value> </xqx:integerConstantExpr> </xqx:predicates> </xqx:stepExpr> </xqx:pathExpr> </xqxuf:targetExpr> </xqxuf:deleteExpr> </xqxuf:modifyExpr> <xqxuf:returnExpr> <xqx:varRef> <xqx:name>newVar</xqx:name> </xqx:varRef> </xqxuf:returnExpr> </xqxuf:transformExpr> </xqx:secondOperand> </xqx:exceptOp> </xqx:returnClause> </xqx:flworExpr> </xqx:queryBody> </xqx:mainModule> </xqx:module>
Received on Monday, 10 September 2007 19:16:36 UTC