AW: [xsd-users] Tree-Mapping and xsd:decimal several problems
Forstner Michael
Michael.Forstner at cpg.de
Wed Sep 19 04:38:21 EDT 2007
Hi Boris,
thanks for your fast reply.
I'd really appreciate it if you could implement the custom CurrencyAndAmount type
for me.
Another problem is that after parsing a XML-File the internal double value
is still uninitialized. This "bug" would also be fixed with this custom type?
Thank you very much,
Michael
> -----Ursprüngliche Nachricht-----
> Von: Boris Kolpackov [mailto:boris at codesynthesis.com]
> Gesendet: Mittwoch, 19. September 2007 10:06
> An: Forstner Michael
> Cc: xsd-users at codesynthesis.com
> Betreff: Re: [xsd-users] Tree-Mapping and xsd:decimal several problems
>
> Hi Michael,
>
> Forstner Michael <Michael.Forstner at cpg.de> writes:
>
> > After parsing a XML-File with following content in a
> CurrencyAndAmount
> > field, the internal double-value of the generated cxx-tree-class is
> > still uninitialized:
> >
> > <TtlIntrBkSttlmAmt Ccy="EUR">288.35</TtlIntrBkSttlmAmt>
> >
> > After serializing to a XML-File, the decimal point is ','
> instead of '.'
>
> I think your default locale has decimal point facet set to ','
> instead of '.'. Since the spec prescribes that the decimal point
> should always be '.', irrespective of the locale, this is a bug
> in our parsing/serialization code. I've applied a fix to the
> 3.0.0 codebase which sets the stream's locale that is used internally
> by parsing and serialization code to locale::classic (). This locale
> corresponds to the "C" locale and always has decimal point as '.'.
>
> This fix will appear in the next version of XSD (3.1.0). I've also
> uploaded the changes that can be used with 3.0.0:
>
> http://www.codesynthesis.com/~boris/tmp/libxsd-3.0.0-float-loc
> ale.tar.gz
>
> Simply replace the two files in libxsd with the versions provided in
> the archive.
>
>
> > and the setting 'fractionDigits value="2"' is ignored:
> >
> > <sw8:TtlIntrBkSttlmAmt
> Ccy="EUR">278,35000000000002</sw8:TtlIntrBkSttlmAmt>
>
> The fractionDigits faced is not yet supported in the generated code.
> One way to overcome this is to customize the generated
> CurrencyAndAmount
> class to serialize only 2 fraction digits. For an example on how to
> customize the generated types, see the custom/ directory in
> example/cxx/tree/ as well as the C++/Tree Mapping Customization Guide:
>
> http://wiki.codesynthesis.com/Tree/Customization_guide
>
> In particular, the wildcard example shows how to customize the
> serialization operator. Also let me know if you would like me to
> implement the custom CurrencyAndAmount type for you.
>
> Boris
>
More information about the xsd-users
mailing list