- From: Pete Cordell <petexmldev@tech-know-ware.com>
- Date: Tue, 28 Feb 2006 09:28:15 -0000
- To: <Paul.V.Biron@kp.org>
- Cc: <public-xsd-databinding@w3.org>
----- Original Message From: <Paul.V.Biron@kp.org>
>> I don't think there is a problem when the integers match canonical
> forms.
>> Certainly your first example matches the canonical form, as does your
> second
>> one, but I'm not sure if that is the intent.
>
>> Bigger problems happen when the desired output is something like 001,
> 002,
>> 003 etc. (e.g. \d{3}), or requiring the + or - sign (e.g. [-+]\d+).
>
> Actually, my second example did NOT match a canonical form:
...
> <xs:pattern value='(0+|23[284]+)?\d*'/>
...
> Note the 0+ at the start. Well, I guess since I made it optional, you
> could ignore it...so, change that to:
...
> <xs:pattern value='0+(23[284]+)?\d*'/>
...
> and then it is basically the same as your \d{3} case.
Apologies for being too literal in my interpretation of your example. I had
hoped I had conveyed that you may not have intended to match a canonical
form.
> What problem could be caused by requiring the sign? Which was optional in
> my first example.
>
> I realize that it is not always easy to serialize some pathological
> cases...but again, I think it is unacceptable for this WG to tell
> implementors that it is OK to not support some aspect of the schema spec.
My understanding is that the document is not limiting what schema developers
can do, but trying to capture what will lead to a good or bad experience
using data binding technology. Schema developers are quite at liberty to
ignore the advice if they wish. Such decisions can best be made with the
document providing suitable advice.
Another thing is, if we just take a hard line that schema developers must be
able to do all that schema allows them to do, don't we end up with a one
line document?
> Luckily I don't have to do it...but I'm sure some smart person could write
> an algorithm that translated a schema regex into an sprintf format string,
> couldn't they?
I personally don't feel that a recommendation should be requiring behaviour
that the authors of the recommendation don't know how to do.
Patterns in general either match or not, so trial and error seems to be the
only general option for trying to match a particular pattern. There is
potential to do this with an integer, where all you can really do is add
leading zeros and try adding a plus sign. Trouble is, this could be long
winded because you don't know whether the pattern did not match because it,
say, didn't have enough leading zeros, or it's just not possible to match
the pattern. Floating point numbers present even more of a problem. In the
simple case the mantissa can have leading or trailing zeros, or be limited
to a limited number of trailing zeros, or have a leading + sign. Similarly,
the exponent can have leaning plus sign, have leading zeros, be E or e or
absent completely. I make that over 7000 possible combinations - and
they're the easy ones. It may be decided that the exponent should be a
multiple of 3 (e.g. /-?\d+(\.\d+)?e-?(0|3|6|9|12)/).
This to me would suggest that a developer would get a bad experience
attempting to apply arbitrary patterns to numerical types.
Pete.
--
=============================================
Pete Cordell
Tech-Know-Ware Ltd
for XML to C++ data binding visit
http://www.tech-know-ware.com/lmx
(or http://www.xml2cpp.com)
=============================================
Received on Tuesday, 28 February 2006 09:28:28 UTC