[xquery-talk] why must one have something inside {} ?

G. Ken Holman gkholman at CraneSoftwrights.com
Sat Dec 3 05:29:01 PST 2011


At 2011-12-03 21:20 +0800, jidanni at jidanni.org wrote:
>Gentlemen, what a spiteful language xquery is, not allowing an empty
>statement. I want to "comment out" a line,
>
>  <Document>
>  {doc("p.xml")//STYLES/*} <--- Let's comment out this line
>
>  <Document>
>  {(: doc("p.xml")//STYLES/* :)}
>BaseX makes [XPST0003] Expecting valid expression after "{".
>
>  <Document>
>  <!-- {doc("p.xml")//STYLES/*} -->
>Works but ends up in output.
>
>It's all because {} for some reason needs to be filled with some junk.
>OK, adding "" works:
>  <Document>
>  {""(: doc("p.xml")//STYLES/* :)}

In XPath syntax, the empty string is not a valid expression:

   http://www.w3.org/TR/2007/REC-xpath20-20070123/#prod-xpath-XPath

Your use of curly braces has to be populated with an XPath 
expression.  An XPath expression is evaluated after comments have 
been removed.

   http://www.w3.org/TR/2007/REC-xpath20-20070123/#comments
   "Comments are lexical constructs only, and do not affect expression
    processing."

Thus you need *something* to prevent the contents of the curly braces 
to be empty after removing comments.

I tell my students to use () rather than "".  This is an explicit 
lesson in the class because of the intuition that a comment is an 
expression, when it isn't.

I hope this explanation helps.

. . . . . . . . .  Ken


--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/t37DVX
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/q/
G. Ken Holman                   mailto:gkholman at CraneSoftwrights.com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal



More information about the talk mailing list