- From: <bugzilla@wiggum.w3.org>
 - Date: Thu, 24 May 2007 14:17:13 +0000
 - To: public-qt-comments@w3.org
 - CC:
 
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4581
           Summary: [FS] Quantifiers in static type of name tests
           Product: XPath / XQuery / XSLT
           Version: Recommendation
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Formal Semantics
        AssignedTo: jmdyck@ibiblio.org
        ReportedBy: nick@cbcl.co.uk
         QAContact: public-qt-comments@w3.org
In section 8.2.3.1.1 it states "For example, if $v is bound to an element with
a computed name, the type of $v is element. The static type computed for the
expression $v/self::foo is element foo of type xs:anyType, which makes use of
foo in the name test to compute a more specific type."
The static typing rules in this section reflect this behaviour. But I do not
think the quantifier is correct.
If $v is an element (so has static type element * of type xs:anyType) then it
may or may not satisfy self::foo, as when evaluated the name might not be
"foo", in which case an empty sequence is returned.
Therefore I think the static type should be "(element foo of type
xs:anyType)?". So therefore the type inferences for "element of element *" and
"attribute of attribute *" should be:
statEnv |-  test QName2 with element of element * OptTypeSpecifier : element
QName2 OptTypeSpecifier ?
Received on Thursday, 24 May 2007 14:17:22 UTC