- From: <bugzilla@wiggum.w3.org>
- Date: Tue, 05 Apr 2005 08:42:48 +0000
- To: public-qt-comments@w3.org
- Cc:
Summary: Is unsignedInt("+123") an error?
Product: XPath / XQuery / XSLT
Version: Last Call drafts
Platform: All
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: Functions and Operators
AssignedTo: ashok.malhotra@oracle.com
ReportedBy: mike@saxonica.com
QAContact: public-qt-comments@w3.org
Is the expression unsignedInt("+123") an error?
Although the merging of text on casts and constructor functions is a great
improvement, the spec can still be read in two different ways. It hinges on the
question of whether section 17.1.1 is applicable when casting from a string to a
derived type.
If 17.1.1 is applicable, then we apply whitespace normalization and the
resulting string must be in the lexical space for the type. "+123" is not in the
lexical space of xs:unsignedInt, so this construct is an error.
If 17.1.1 is not applicable to derived types, then we find ourselves in section
17.2 (Casting to derived types) and thence 17.5, (Casting across the type
hierarchy). This tells us to (a) cast "+123" to a string (which succeeds), (b)
cast "+123" to an xs:integer (which succeeds), and (c) cast the integer 123 to
an xs:unsignedInt (which also succeeds).
So which is it? I don't think 17.1.1 makes sense unless it *is* applicable to
casting from string to a derived type, because otherwise the notion of
whitespace normalization is meaningless - the distinctions between whitespace
handling for different target types only make sense where the target type is
derived from string. So the conclusion is that 17.1.1 should not be a subsection
of 17.1 (Casting from Primitive Types to Primitive Types) and that some better
introductory material is needed at the start of section 17 telling you which
section to turn to for each particular case.
Michael Kay
Received on Tuesday, 5 April 2005 19:13:02 UTC