- From: <bugzilla@jessica.w3.org>
- Date: Tue, 19 Jul 2011 20:32:25 +0000
- To: public-qt-comments@w3.org
http://www.w3.org/Bugs/Public/show_bug.cgi?id=13303 Summary: [XPath30] editorial: "in scope" Product: XPath / XQuery / XSLT Version: Working drafts Platform: All OS/Version: All Status: NEW Severity: minor Priority: P2 Component: XPath 3.0 AssignedTo: jonathan.robie@gmail.com ReportedBy: jmdyck@ibiblio.org QAContact: public-qt-comments@w3.org There's an inconsistency re the meaning of "in scope". Consider the example: for $v as xs:integer in (1,2) return for $v as xs:string in ("a", "b") return $v At the point where the variable reference appears, what variables are "in scope"? (Note that there's no question that the variable reference refers to the xs:string variable.) In one interpretation of the phrase, both $v variables are "in scope". This interpretation is clearly the one in use in section 3.1.2: If a variable is bound in the static context for an expression, that variable is in scope for the entire expression. ... If a variable reference matches two or more variable bindings that are in scope, then the reference is taken as referring to the inner binding, that is, the one whose scope is smaller. However, this interpretation has two problems: (1) It makes variable resolution dependent on information (size or nestedness of scopes) that isn't present in the static context (as defined). (2) It conflicts (more or less) with other passages in the spec: (2a) 2.1.1 Static Context says: [Definition: In-scope variables. This is a mapping from expanded QName to type.] where the word "mapping" presumably excludes the possibility that the in-scope variables could contain two entries with the same expanded QName. Mind you, this is a recent change. It used to say: This is a set of (expanded QName, type) pairs. (2b) 2.2.5 Consistency Constraints says: For each (variable, type) pair in in-scope variables and the corresponding (variable, value) pair in variable values such that the variable names are equal, the value must match the type ... If in-scope variables contains entries for both variables: ('v', xs:integer) ('v', xs:string) then variable values must also have entries for both, e.g.: ('v', 1) ('v', "a") but then the consistency constraint might be taken to apply to all four combinations, some of which violate the constraint. (You might point out that only two of those combinations involve "corresponding" pairs, but then if "corresponding" is so smart, why do we need to say "such that the variable names are equal"?) I'm not saying that the latter would be a reasonable stance, but just that 2.1.1 and 2.2.5 appear to assume (and would certainly be happier with) an interpretation in which *only* the xs:string variable is "in scope" at the point of the variable reference. --- Anyhow, I think the wording re "in scope" should be made more consistent. As to which way, I think it would be simpler to change the wording in 3.1.2 to use the interpretation that 2.1.1 and 2.2.5 appear to assume. -- Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug.
Received on Tuesday, 19 July 2011 20:32:32 UTC