- From: Michael Dyck <jmdyck@ibiblio.org>
- Date: Tue, 10 May 2016 11:07:53 -0400
- To: Public Joint XSLT XQuery XPath <public-xsl-query@w3.org>
> ACTION A-642-05 MDyck to update the spec to reflect NCName:*/*:NCName > change to option 1a as per > https://lists.w3.org/Archives/Public/public-xsl-query/2016Mar/0035.html > [this is the decision regarding parsing MapConstructorEntry] Done. Specifically: - In the xpath31 and xquery31 grammars, in the Wildcard production, I fused the terminal symbols into ":*" and "*:". (Didn't need to undo any '2b' changes, because I hadn't checked them in yet.) - In the XPath/XQuery 3.1 docs: - At the end of A.2.2 "Terminal Delimitation", I dropped the bullet that requires symbol separators when the ":" of a MapConstructorEntry is followed by a QName, an NCName, or "*". - In 3.11.1.1 "Map Constructors", I expanded the Note re parsing: In some circumstances, it is necessary to include whitespace before or after the colon of a MapConstructorEntry to ensure that it is parsed as intended. For instance, consider the expression map{a:b}. Although it matches the EBNF for MapConstructor (with a matching MapKeyExpr and b matching MapValueExpr), the "longest possible match" rule requires that a:b be parsed as a QName, which results in a syntax error. Changing the expression to map{a :b} or map{a: b} will prevent this, resulting in the intended parse. Similarly, consider these three expressions: map{a:b:c} map{a:*:c} map{*:b:c} In each case, the expression matches the EBNF in two different ways, but the "longest possible match" rule forces the parse in which the MapKeyExpr is a:b, a:*, or *:b (respectively) and the MapValueExpr is c. To achieve the alternative parse (in which the MapKeyExpr is merely a or *), insert whitespace before and/or after the first colon. See A.2 Lexical structure. These changes will be visible the next time Jonathan builds the docs. -Michael
Received on Tuesday, 10 May 2016 15:08:25 UTC