- From: <bugzilla@wiggum.w3.org>
- Date: Fri, 13 Jan 2006 11:46:23 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=2710
Summary: [xqueryx and xquery] extra white space in pragma content
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: XQueryX
AssignedTo: jim.melton@acm.org
ReportedBy: davidc@nag.co.uk
QAContact: public-qt-comments@w3.org
The stylesheet has
<xsl:variable name="PRAGMA_BEGIN" select="'(# '"/>
<xsl:variable name="PRAGMA_END" select="' #)'"/>
which means that a space is inserted at the beginging and end of each pragma.
The stylesheet also inserts a space between the name and pragmacontents.
so the xqueryx
<xqx:pragma>
<xqx:pragmaName>a</xqx:pragmaName>
<xqx:pragmaContents>b</xqx:pragmaContents>
</xqx:pragma>
is defined to mean the same as the xquery
(# a b #)
The EBNF for this expression is
[66] Pragma ::= "(#" S? QName PragmaContents "#)"
so the first space has no effect but both of the second two spaces end up being
parsed as pragmacontent. Since the semantics of this are implementation defined,
this may or may not have an effect. However whether or not a sytem treats them
differently here is no XqueryX expression corresponding to xquery expressions
which do not have space in pragmacontent, such as
(#a+b#}{1}
which is a valid Xquery with pragma with name a and content +b
The final space is easy to fix, $PRAGMA_END should just be '#)'
However the middle space is harder, I think that the best fix would be for the
stylesheet to continue to insert a space between the name and content but the
XQuery EBNF modified to
[66] Pragma ::= "(#" S? QName (S PragmaContents)? "#)"
so that if you have any contents, they have to be separated by white space from
the name (which would make my (#a+b#} example above a syntax error)
David
Received on Friday, 13 January 2006 11:46:30 UTC