[Bug 3696] K-GenCompEq-23

http://www.w3.org/Bugs/Public/show_bug.cgi?id=3696

           Summary: K-GenCompEq-23
           Product: XML Query Test Suite
           Version: 1.0
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XML Query Test Suite
        AssignedTo: andrew.eisenberg@us.ibm.com
        ReportedBy: tim@cbcl.co.uk
         QAContact: public-qt-comments@w3.org


Under the normalization rules specified in formal semantics, the query:

(xs:anyURI("example.com/"), 
 1, 
 QName("example.com", "ncname"), 
 false(), 
 xs:hexBinary(\"FF\")) 
  = 
(xs:anyURI("example.com/NOT\), 
 0, 
 QName("example.com", "p:ncname"), 
 true(), 
 xs:hexBinary(\"EF\"))

expands to:

some $v1 in fn:data(([Expr1]Expr)) satisfies
  some $v2 in fn:data(([Expr2]Expr)) satisfies
    let $u1 := fs:convert-operand($v1, $v2) return
      let $u2 := fs:convert-operand($v2, $v1) return
        fs:eq($u1, $u2)

Now:

"When evaluating a general comparison in which either operand is a sequence of
items, an implementation may return true as soon as it finds an item in the
first operand and an item in the second operand that have the required
magnitude relationship. Similarly, a general comparison may raise a dynamic
error as soon as it encounters an error in evaluating either operand, or in
comparing a pair of items from the two operands. As a result of these rules,
the result of a general comparison is not deterministic in the presence of
errors."

Since fs:eq is only defined when the two arguments have the same type, the
comparison may result in a type checking error, which should be reflected in
the expected results of this test.

Is there an argument for the following:

some $v1 in fn:data(([Expr1]Expr)) satisfies
  some $v2 in fn:data(([Expr2]Expr)) satisfies
    let $u1 := fs:convert-operand($v1, $v2) return
      let $u2 := fs:convert-operand($v2, $v1) return
        (if fs:eq is defined on type($u1), type($u2)
         then false
         else fs:eq($u1, $u2))

?

Received on Monday, 11 September 2006 09:47:21 UTC