[Bug 4581] [FS] Quantifiers in static type of name tests

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