[xsd-announcements] XSD 3.2.0 released
boris at codesynthesis.com
Tue Sep 30 09:39:20 EDT 2008
We have released XSD 3.2.0. The NEWS file entries for this release
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
* 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
* 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
* 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
Furthermore, this version of XSD has been extensively tested with the
just released Xerces-C++ 3.0.0 and all precompiled binary distributions
are build with this version of Xerces-C++. Due to static library name
changes between Xerces-C++ 2.8.0 and 3.0.0, the Visual Studio projects
and solutions have been split. Solutions in the form tree.sln link to
Xerces-C++ 3.0.0 while solutions in the form tree-xerces2.sln link to
Thanks to the following individuals for reporting bugs as well as suggesting
fixes and improvements:
Gennady Khokhorin <gok at aerometric-ak.com>
Uri Karagila <uri at hyperroll.com>
Gordon Kramer <gkr at as-guides.com>
Ryan Prather <Ryan.Prather at peterson.af.mil>
Shivakumar Balasubramanyam <sbalasub at qualcomm.com>
Timothy K Lenz <timothy.k.lenz at lmco.com>
Nick John <Nick.John at ActivIdentity.com>
Samuel Toulouse <samlepirate at samlepirate.net>
David Moss <david.r.moss at selex-comms.com>
Roger Evans <roger at autodata.no>
Joe Mcduffey <jdmcduf at nsa.gov>
Mario Lang <mlang at delysid.org>
Manav Rathi <manav.rathi at incainformatics.com>
Matthew Hutchins <Matthew.Hutchins at csiro.au>
Bruno Marotta <bruno.marotta at fortis.com>
Ray Lischner <rlischner at proteus-technologies.com>
Thierry Seegers <Thierry.Seegers at am.sony.com>
Raymond Rizzuto <Raymond.Rizzuto at sig.com>
Aaron Bray <abray at ara.com>
Petteri Tolonen <petteri.tolonen at logica.com>
Forstner Michael <Michael.Forstner at cpg.de>
Jeroen N. Witmond <jnw at xs4all.nl>
Alan Pettitt <ap at kaon.co.uk>
Rance Kirtley <rakirtley at bellsouth.net>
Michael Coulman <michael.coulman at mac.com>
Mark Stevens <Mark.Stevens at dtn.com>
Eric Niebler <eric at boostpro.com>
Precompiled binary distributions are available from the product's
Source code for this release is available from the project's web page:
SHA1 checksums for the files:
More information about the xsd-announcements