[xsd-announcements] XSD 3.2.0 beta1 released

Boris Kolpackov boris at codesynthesis.com
Fri Aug 8 11:56:22 EDT 2008


We have released the first and hopefully the only beta for XSD 3.2.0.
Initially this release was planned as 3.1.1 but due to the large 
number of new features it was changed to 3.2.0. The final release is
planned for mid-September.

One of the important changes in this release is the support for
Xerces-C++ 3.0.0 beta2 which was released a couple of weeks ago.
Xerces-C++ 3.0.0 includes a number of major fixes and enhancements
(new ##other interpretation, large maxOccurs fix, 64-bit safe
interfaces, automake-based build system, performance optimization,
just to name a few) which is why we suggest that everyone considers
migrating to Xerces-C++ 3.0.0 and help test XSD 3.2.0.b1 with
Xerces-C++ 3.0.0.b2. For more information on Xerces-C++ 3.0.0.b2
including download locations, refer to the official announcement:


The NEWS file entries for 3.2.0 so far are as follows:

  * New option, --disable-warning, disables printing of a warning with
    the specified id. Specifying 'all' for the warning id disables all

  * New options, --export-maps and --import-maps, provide support for 
    splitting a polymorphic type hierarchy across several Win32 DLLs.
    See the compiler command line manual (man pages) for details.


  * During serialization the generated code automatically assigns
    generic prefixes (p1, p2, etc) to XML namespaces used in the
    vocabulary and for which no custom prefix-namespace mapping
    was provided via the xml_schema::namespace_infomap argument.
    The xml_schema::namespace_infomap argument in the serialization
    functions is now default-initialized to an empty map. The
    xml_schema::no_namespace_mapping and xml_schema::xsi_already_in_use
    exceptions have been removed.

  * New example, performance, measures the performance of parsing and
    serialization. This example also shows how to structure your code
    to achieve the maximum performance for these two operations.

  * New example, xpath, shows how to use the C++/Tree mapping together
    with XPath.

  * New options, --one-accessor-regex, --opt-accessor-regex,
    --seq-accessor-regex, --one-modifier-regex, --opt-modifier-regex,
    and --seq-modifier-regex, allow specification of transformations
    for accessor and modifier function names for elements and attributes
    with specific cardinalities. For more information see the NAMING
    CONVENTION section in the compiler command line manual (man pages).

  * Support for comparison (--generate-comparison) and printing 
    (--generate-ostream) of polymorphic object models.

  * New serialization flag, xml_schema::flags::dont_pretty_print,
    disables extra spaces and new lines that make the resulting XML
    slightly bigger but easier to read.

  * New example, custom/double, shows how to customize parsing and 
    serialization code for the xsd:double XML Schema built-in type.
    It can be used as a guide on how to customize built-in XML Schema
    types that are mapped to fundamental C++ types.

  * Support for fractionDigits and totalDigits facets in serialization
    of types derived from xsd:decimal.

  * New set of compile-time macros that control how the xsd:float, 
    xsd:double, and xsd:decimal types are serialized. The following
    macros control the format:


    The following macros control the precision:


    If the *_PRECISION_MAX macro is defined then the maximum number of
    potentially significant decimal digits that the type can represent
    is used. Otherwise, if the *_PRECISION macro is defined then its
    value is used. By default the precision is set to the number of
    decimal digits that the type can represent without change. For
    more information on these options, refer to the following paper:


    The old macro, XSD_FP_ALL_DIGITS, that was equivalent to defining
    all three *_PRECISION_MAX macros has been removed.

    An alternative to using these macros is to customize the floating
    point type as shown in the custom/double example.

  * An additional constructor is generated in situations where a type
    contains one or more required element of complex type (that is,
    it itself contains elements or attributes). In this constructor,
    initializers for such elements are passed as std::auto_ptr and the
    newly created instance is directly initialized with and assumes
    ownership of the pointed to objects. This constructor is a logical
    addition to the non-copying modifiers that were introduced in the
    previous version.

  * Extra conversion operators in the fundamental_base class template
    which is used to emulate inheritance from fundamental types are now
    disabled by default since they cause problems on several compilers.
    To enable them compile your code with the XSD_TREE_EXTRA_FUND_CONV
    macro defined.


  * New options, --generate-xml-schema and --extern-xml-schema, trigger
    generation of the mapping for the XML Schema namespace to a separate
    header file and inclusion of that header into other generated header
    files instead of generating the necessary declarations inline,
    respectively. See the compiler command line manual (man pages) for

  * New example, performance, measures the performance of XML parsing.
    This example also shows how to structure your code to achieve the
    maximum performance for this operation.

  * Type map files can now include comments. A comment starts with #
    and ends with a new line or end of file. To specify a name that
    contains # enclose it in "".

  * In type map files the optional argument type now defaults to the
    return type if the return type ends with * or & (that is, it is
    a pointer or a reference) and 'const return type&' otherwise.

  * The interface for polymorphic parsing has been simplified. Calling the
    *_parser() functions multiple times to specify several parsers is no 
    longer supported. Instead you need to pass the xml_schema::parser_map
    object which contains the parsers. For more information refer to
    Section 5.4, "Support for Polymorphism" in the C++/Parser Mapping
    Getting Started Guide.

  * The use of virtual inheritance has been reduced which results in a
    much smaller object code size (more than factor of 2 on some tests)
    and faster C++ compilation with less RAM used.

  * The low-level Expat-specific parsing API (parse_begin() and parse_end())
    has been extended to provide XML and XML Schema error translation to
    exceptions or error handler calls. See Section 7.2, "Expat Document
    Parser" in the C++/Parser Mapping Getting Started Guide for more

To support both Xerces-3 and Xerces-2, the project and solution files
for VC++ have been split with the files containing xerces2 in their
names linking to Xerces-2.x.y libraries.

If you would like to try the xpath example with Xerces-C++ 3.0.0.b2,
you can use the following snapshot for XQilla 2.2.0:


The final XQilla 2.2.0 will be released after Xerces-C++ 3.0.0.

Precompiled binary distributions for 3.2.0.b1 are available from the
product's download page:


Source code for this release is available from the project's web page:


SHA1 checksums for the files:

eca12ad79bf3f0de1f0eb3795e3fb9990d79b8b1  xsd-3.2.0.b1.tar.bz2
1bd66e0ab7fe45599425906c199e1aca5c11e261  xsd-3.2.0.b1-i686-linux-gnu.tar.bz2
230d2c683133da4d34fe3e6775f93e6bc3298bef  xsd-3.2.0.b1-x86_64-linux-gnu.tar.bz2
bae84e30316a6448bd43122e1ca566e0e10ecf6a  xsd-3.2.0.b1-i686-macosx.tar.bz2
411f34e17bc43c7f7cc67c03b32c95f2d31c1c14  xsd-3.2.0.b1-sparc-solaris.tar.gz
b196af066bf548b0e76d2c1c56805e10478cae14  xsd-3.2.0.b1-i686-windows.zip


More information about the xsd-announcements mailing list