[xsd-announcements] XSD 3.2.0 beta1 released
Boris Kolpackov
boris at codesynthesis.com
Fri Aug 8 11:56:22 EDT 2008
Hi,
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:
http://marc.info/?l=xerces-c-users&m=121692508501507&w=2
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
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://www2.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.
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:
http://www.codesynthesis.com/~boris/tmp/xqilla-SVN-20080808.tar.gz
http://www.codesynthesis.com/~boris/tmp/xqilla-SVN-20080808.zip
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:
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:
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
Enjoy,
Boris
More information about the xsd-announcements
mailing list