On Wed, Jul 21, 2010 at 14:23, Csaba Raduly <[email protected]> wrote:
> On Tue, Jul 20, 2010 at 3:40 AM, Dan Sommers  wrote:
>> Given this schema file, t.xsd:
>>
>>    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>>      <xs:element name="t" type="xs:double"/>
>>    </xs:schema>
>>
>> And this xml document, t.xml:
>>
>>    <t>e</t>
>>
>> I got this:
>>
>>    $ xmllint --schema t.xsd t.xml
>>    <?xml version="1.0"?>
>>    <t>e</t>
>>    t.xml validates
>>
>> Note that <t>.</t> and <t>.e</t> also validate.
>>
>> I tracked it down to xmlschematypes.c, starting around line 2465, where
>> it starts scanning the input for something suitable for sscanf("%lf").
>> Should that code contain an extra check that there is at least one digit
>> somewhere?
>
> I think you are right. This code:
>                while ((*cur >= '0') && (*cur <= '9')) {
>                    cur++;
>                }
> accepts 0 or more digits (before the period); perhaps it should check
> for 1 or more digits instead:

No!  The case like ".5" instead of "0.5" is perfectly valid and widely used!
Whether the "." or "e" are valid string representation of the "double"
type or should be rejected -- it's another matter.  But zero digits
before dot are absolutely correct and should be allowed.

-- 
Andrew W. Nosenko <[email protected]>
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to