[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