[xsde-announcements] XSD/e 3.2.0 released
Boris Kolpackov
boris at codesynthesis.com
Tue Feb 15 05:57:05 EST 2011
Hi,
After extensive beta-testing we are pleased to announce the release of
XSD/e 3.2.0. We would like to thank everyone who tested the alpha and
beta snapshots for this release.
The NEWS file entries for XSD/e 3.2.0 are as follows:
* Support for ISO-8859-1 in addition to UTF-8 as application encoding.
Note that this encoding is not the same as the XML document encoding
that is being parsed or serialized. Rather, it is the encoding that
is used inside the application. When an XML document is parsed, the
character data is automatically converted to the application encoding.
Similarly, when an XML document is serialized, the data in the
application encoding is automatically converted to the resulting
document encoding. To select a particular encoding, configure the
XSD/e runtime library accordingly and pass the --char-encoding option
to the XSD/e compiler when translating your schemas.
* Support for custom allocators. This feature allows you to configure
the XSD/e runtime and generated code to perform memory management
using custom allocator functions provided by your application instead
of the standard operator new/delete. For more information, see Section
3.8, "Custom Allocators" in the C++/Hybrid Mapping Getting Started
Guide (equivalent documentation is provided for other mappings) as
well as the 'allocator' example in the examples/cxx/hybrid/ directory.
* When built with Xerces-C++ 3-series, enable handling of multiple imports
for the same namespace. Before, all subsequent imports for a namespace
were ignored which caused errors in some schemas.
* Automatic mapping for the urn-style XML namespaces. The last component
in the urn name is used to derive the C++ namespace name.
* New option, --schema-file-regex, in combination with the existing
--type-file-regex, can be used to place the generated files into
subdirectories or to resolve file name conflicts in the file-per-
type mode (--file-per-type).
* Strings used to match regular expression supplied with the
--namespace-regex and --anonymous-regex options now include the file
component for the schema being compiled.
C++/Hybrid
* String-based types that use XML Schema restriction by enumeration are
now mapped to C++ classes with semantics similar to C++ enum. You can
suppress this new mapping and instead get the old behavior (plain
inheritance) by specifying the --suppress-enum compiler option. See
Section 4.3, "Enumerations" in the Getting Started Guide for more
information.
* New option, --generate-clone, triggers the generation of clone functions
for variable-length types. These functions allow you to make dynamically-
allocated copies of variable-length objects.
* Support for schema evolution using substitution groups. The 'ignore' and
'passthrough' examples in the examples/cxx/hybrid/evolution/ directory
show how the new mechanism works. The 'ignore' example shows how to
ignore unknown elements. The 'passthrough' example shows how to pass
the unknown content through parsing and serialization so that the output
XML contains all the unknown elements.
* The anySimpleType build-in type is now mapped to std::string or a C-string,
depending on whether STL is enabled or not.
* New mapping for anyType with support for polymorphism. For more
information, see Section 5.14, "Mapping for anyType" in the Embedded
C++/Hybrid Mapping Getting Started Guide.
* The object model interface for optional members of variable-length
types now omits the _present modifier function. This is done to help
detect programming errors that result from a type becoming variable-
length due to schema changes. To reset such optional members you can
call the member modifier function with NULL as its argument.
* New configuration parameter, XSDE_STL_ITERATOR, makes iterators
provided by the mapping conform to the STL requirements. This feature
requires working <iterator> header and allows you to use the standard
algorithms such as find_if, etc.
* When the code is generated with the --generate-polymorphic or
--runtime-polymorphic option, the resulting parser and serializer
aggregate classes provide the static polymorphic() function which
returns true if the object model corresponding to the root element
or root type is polymorphic and false otherwise. This can be used
together with the XSDE_POLYMORPHIC macro to implement generic parsing
and serialization code that works with both polymorphic and non-
polymorphic object models.
* XML Schema union types with members that are enumeration types are
automatically converted to equivalent enumeration types with a union
of all the member's enumerators.
C++/Parser
* Support for the following XML Schema facets:
String-based types:
- length
- minLength
- maxLength
- pattern
- whiteSpace
- enumeration
Integer and floating-point types:
- minExclusive
- minInclusive
- maxExclusive
- maxInclusive
For more information on the pattern facet validation, see the XSDE_REGEXP
parameter in the configuration files.
* The anySimpleType build-in type is now mapped to std::string or a C-string,
depending on whether STL is enabled or not.
C++/Serializer
* Support for the following XML Schema facets:
String-based types:
- length
- minLength
- maxLength
- pattern
- enumeration
Integer and floating-point types:
- minExclusive
- minInclusive
- maxExclusive
- maxInclusive
For more information on the pattern facet validation, see the XSDE_REGEXP
parameter in the configuration files.
* The anySimpleType build-in type is now mapped to std::string or a C-string,
depending on whether STL is enabled or not.
This release adds official support, instructions, and sample configuration
files for the following platforms/toolchains:
Android/Android NDK
Symbian/CSL-GCC (GCCE)
Integrity 178b/Green Hills MULTI C/C++
It is now also possible to build the XSD/e runtime library for iPhoneOS/iOS
with the XCode project.
Precompiled binary distributions are available from the product's download
page:
http://www.codesynthesis.com/products/xsde/download.xhtml
Source code for this release is available from the project's web page:
http://www.codesynthesis.com/projects/xsde/
SHA1 checksums for this release:
a9cbe6cce22001507f4a333f2bb9342df3b4cf64 xsde-3.2.0.tar.bz2
bde4b440069811e19cf8aa76b8dd758c0a8bf50a xsde-3.2.0+dep.tar.bz2
c26f265fc62e65d07a620c7b70d288c0cfd43612 xsde-3.2.0-i686-linux-gnu.tar.bz2
2d59565013fe4436319ee8bd2bf324477c6fc8d7 xsde-3.2.0-x86_64-linux-gnu.tar.bz2
cb1123dd72048d2c3ed5cf647584fa40763ea687 xsde-3.2.0-i686-macosx.tar.bz2
1bcd1572f2daee23a46b056efc8edde2dd349238 xsde-3.2.0-sparc-solaris.tar.gz
0ec3257498a9f79aafe960a1bc1394ffaac920e9 xsde-3.2.0-i686-solaris.tar.gz
06ae08d68b413fe143e686c7cb488030a98332ff xsde-3.2.0-i686-windows.zip
Enjoy,
Boris
More information about the xsde-announcements
mailing list