- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 06 Jul 2006 08:54:42 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=3433 Summary: Comparing xs:anyURI values Product: XPath / XQuery / XSLT Version: Candidate Recommendation Platform: PC OS/Version: Windows XP Status: NEW Severity: normal Priority: P2 Component: XPath AssignedTo: chamberl@almaden.ibm.com ReportedBy: mike@saxonica.com QAContact: public-qt-comments@w3.org Is the following expression permitted? xs:anyURI("http://a.com/") lt xs:anyURI("http://b.com/") The rules for ValueComparison say: "Next, if possible, the two operands are converted to their least common type by a combination of type promotion and subtype substitution. ... Finally, if the types of the operands are a valid combination for the given operator, the operator is applied to the operands." Type promotion has no effect because the least common type is xs:anyURI. There is no entry in the operator mapping table for appling the "lt" operator to two xs:anyURI values. So the above expression appears to be illegal. This is unfortunate. It blows a hole in transitivity, since it is legal to compare an xs:anyURI with a string. It means that max((Uri1, Uri2)) is an error, whereas max((Uri1, Uri2, "")) might or might not succeed depending on the sequence of evaluation. Proposed change: value comparisons should promote xs:anyURI arguments unconditionally to strings, regardless of the type of the other operand. Alternative (equivalent): add entries in the operator mapping table to do order comparison on xs:anyURI values. XSLT test case sort144 applies.
Received on Thursday, 6 July 2006 08:54:48 UTC