[xsd-users] XSD 3.2.0 released
Boris Kolpackov
boris at codesynthesis.com
Tue Sep 30 09:38:49 EDT 2008
Hi,
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
warnings.
* 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.
C++/Tree
* 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:
XSD_CXX_TREE_FLOAT_FIXED
XSD_CXX_TREE_FLOAT_SCIENTIFIC
XSD_CXX_TREE_DOUBLE_FIXED
XSD_CXX_TREE_DOUBLE_SCIENTIFIC
The following macros control the precision:
XSD_CXX_TREE_FLOAT_PRECISION_MAX
XSD_CXX_TREE_FLOAT_PRECISION
XSD_CXX_TREE_DOUBLE_PRECISION_MAX
XSD_CXX_TREE_DOUBLE_PRECISION
XSD_CXX_TREE_DECIMAL_PRECISION_MAX
XSD_CXX_TREE_DECIMAL_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:
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf
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.
C++/Parser
* 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
details.
* 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
information.
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
2.8.0.
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
download page:
http://www.codesynthesis.com/products/xsd/download.xhtml
Source code for this release is available from the project's web page:
http://www.codesynthesis.com/projects/xsd/
SHA1 checksums for the files:
cbf104bdb158d68416d1e7184930f2f06e0df151 xsd-3.2.0.tar.bz2
4b950de34b61cd78c0cd3fc2b01cfa4066b75996 xsd-3.2.0-powerpc-aix.tar.gz
7e4cb3bc0a3ee6ec3d2bc5798a7b412c3883d6e4 xsd_3.2.0-1_i386.deb
ab5cc6dae39a2dc26085354dd53aa62ff68b437e xsd-3.2.0-1.i686.rpm
bd6b217012a6cda07ae0f7597ee4f23470dba06a xsd-3.2.0-i686-linux-gnu.tar.bz2
7999fc878055bcf208cc0ab674bb8de694dbb760 xsd_3.2.0-1_amd64.deb
afce842c1ec62b8d423cebfb2b8f7c104399c9fa xsd-3.2.0-1.x86_64.rpm
d044e0af9db2335215b3f69592623055b4dca545 xsd-3.2.0-x86_64-linux-gnu.tar.bz2
d0b3f115f4a539c523482ef53a1398df68595757 xsd-3.2.0-powerpc-linux-gnu.tar.bz2
43c2143d4b198a0b5723ee4d8fc1c7b03e0854cb xsd-3.2.0-ia64-linux-gnu.tar.bz2
ba0054f4cb64206e851a6304966725adf0d801fb xsd-3.2.0-hppa-hpux.tar.gz
f2888f8a80530fa69945206bc9da2aa9b4900259 xsd-3.2.0-powerpc-macosx.tar.bz2
0893ac4aca5eb0059e20de8557135a37f3b26337 xsd-3.2.0-i686-macosx.tar.bz2
99e46fe617079ca68bfe586e3a9888741a612b21 xsd-3.2.0-sparc-solaris.tar.gz
9d54011989cbf89971c8549a138df085d09a33c4 xsd-3.2.0-i686-solaris.tar.gz
ac74860b1f69c86b764e6a015b0cce1ebf05dc4f xsd-3.2.0-i686-windows.zip
b56974dcd880e3c5c246b23a9333f126966f5d03 xsd-3.2.msi
Enjoy,
Boris
More information about the xsd-users
mailing list