[xsd-announcements] xsd 2.0.0 released
Boris Kolpackov
boris at codesynthesis.com
Mon Mar 13 09:03:13 EST 2006
Good day,
We've released xsd 2.0.0. The NEWS file entries for this version
are as follows:
* New cardinality calculator. This improves support for schemas that
use complex structures with repeated elements, e.g.,
<complexType name="Type">
<choice>
<sequence>
<element name="a" type="string"/>
<element name="c" type="string"/>
</sequence>
<sequence>
<element name="b" type="string"/>
<element name="c" type="string"/>
</sequence>
</choice>
</complexType>
* New identifier escaping code. With this feature xsd generates proper
code for schemas that use the same name for an element and an attribute
in the same type or use several elements/attributes with different
qualified names but with the same local name, e.g.,
<!-- base.xsd -->
<schema xmlns="http://codesynthesis.com/xmlns/test/foo"
targetNamespace="http://codesynthesis.com/xmlns/test/foo">
<element name="foo" type="int"/>
</schema>
<schema xmlns="http://codesynthesis.com/xmlns/test/bar"
xmlns:f="http://codesynthesis.com/xmlns/test/foo"
targetNamespace="http://codesynthesis.com/xmlns/test/bar">
<import namespace="http://codesynthesis.com/xmlns/test/foo"
schemaLocation="base.xsd"/>
<element name="foo" type="string"/>
<complexType name="Foo">
<sequence>
<element ref="foo"/>
<element name="foo" type="long"/>
<element ref="f:foo"/>
<element ref="f:foo"/>
</sequence>
<attribute name="foo" type="string"/>
</complexType>
</schema>
C++/Tree
* New option, --generate-polymorphic, triggers generation of
polymorphism-aware code. Before this release xsd used to always
generate polymorphism-aware code. However, it appears to be quite
wasteful in terms of the generated code size (up to 40%). You will
now need to explicitly specify this option if you use substitution
groups or xsi:type. A warning is issued if this option is not
specified but the schema makes use of substitution groups.
* New options, --root-element-first, --root-element-last,
--root-element-all, --root-element-none, and --root-element, control
generation of parsing and serialization functions. With these options
you can avoid generating extra code for global elements that are not
document roots. See the man pages for details.
* New options, --parts and -parts-suffix, allows you to split generated
source code into a number of parts. This is useful when translating
large, monolithic schemas and a C++ compiler is not able to compile
the resulting source code at once (usually due to insufficient memory).
* New option, --generate-default-ctor, triggers generation of default
constructors even for types that have required members. Required
members of an instance constructed using such a constructor are not
initialized and accessing them results in undefined behavior. Thanks
to Jean-Francois Dube <jf at magnu.polymtl.ca> for suggesting this
feature.
* New option, --generate-from-base-ctor, triggers generation of
constructors that expect an instance of a base type followed by all
required members. Thanks to Jean-Francois Dube <jf at magnu.polymtl.ca>
for suggesting this feature.
* Information scopes for attributes and elements with default/fixed values
now define the public static default_value function which allows one to
obtain the default/fixed value for the element/attribute. Thanks to
Dave Moss <david.r.moss at selex-comm.com> for suggesting this feature.
* MSVC 7.1 has a limit on the length of the "if else if" chain. This
results in ICE when compiling generated code for enumerations with
a large number of values. This version addresses this issue. Thanks
to Cyrille Chépélov <cyrille at chepelov.org> for reporting this and
suggesting a fix.
C++/Parser
* The parser construction API has changed. Now, for element 'foo',
the name of the parser modifier function is 'foo_parser'. Likewise,
operator() for setting all parsers at once has been changed to the
'parsers' function.
Precompiled binary distributions for various platforms are available
from the product's download page:
http://codesynthesis.com/products/xsd/download.xhtml
Source code for this release is available from the project's web page:
http://codesynthesis.com/projects/xsd/
SHA1 checksums for the files:
ac3995abc49ba5b4361c78a5c45080336ebe9b2d xsd-2.0.0.tar.bz2
af02a006c3c4c62662a1a6e8b5be03042263c7d5 xsd_2.0.0-1_i386.deb
bbbbaa21d529ad6025963e0fd77b7644177e8380 xsd-2.0.0-1.i686.rpm
72de6e6c2d75a5f369e4540802f7e8a5d65975e0 xsd-2.0.0-i686-linux-gnu.tar.bz2
6f08f742154f68b7c88681733be2c0f90f630cd9 xsd_2.0.0-1_amd64.deb
f429995a3902a0b53a052280c23cfe4cbb8e0e68 xsd-2.0.0-1.x86_64.rpm
55d065a82685bbd72506a8a5366507d5e118648f xsd-2.0.0-x86_64-linux-gnu.tar.bz2
4dbde7671eb5390a9cd5f82fc42902da707fc1ac xsd-2.0.0-hppa-hpux.tar.gz
2c43fb2a3b1d6cd3ecf7da7f360a26ce11b9bab3 xsd-2.0.0-hppa-hpux.tar.bz2
568f4c6b039f0358c2d3321dda967e0e1eecc4d5 xsd-2.0.0-powerpc-macosx.tar.bz2
508bdb7900a6c9e11547ed3fb028d2d600cf7273 xsd-2.0.0-sparc-solaris.tar.gz
c2d9fdce523ffc902250c01ef54d74f06417793b xsd-2.0.0-sparc-solaris.tar.bz2
1cfb400be84f2aa97854bad5391b849f4e6c6328 xsd-2.0.0-i686-windows.zip
have fun,
-boris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 652 bytes
Desc: Digital signature
Url : http://codesynthesis.com/pipermail/xsd-announcements/attachments/20060313/f65b0318/attachment.pgp
More information about the xsd-announcements
mailing list