[xsde-announcements] XSD/e 3.2.0 beta1 released
Boris Kolpackov
boris at codesynthesis.com
Tue Oct 19 10:25:26 EDT 2010
Hi,
We have released the first and hopefully the only beta for XSD/e 3.2.0.
The final release is planned for the beginning of November. Besides the
new major features described below, this release includes a large number
of small improvements, bug fixes, and optimizations. I encourage everyone
to test this beta, especially if you are planning to upgrade.
The NEWS file entries for 3.2.0.b1 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 work. 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.
Precompiled binary distributions for 3.2.0.b1 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 the files:
64a0c7988a1c7c154964ba40c0e734c2ef071ec7 xsde-3.2.0.b1.tar.bz2
6c8c7f6a991e3a50098556ce8daf3ddcee1019fb xsde-3.2.0.b1+dep.tar.bz2
7ee412f680a8a439b00683155d3c48951d8db273 xsde-3.2.0.b1-i686-linux-gnu.tar.bz2
77b8c16ae0c0e4e95abde740e845a913de8853ec xsde-3.2.0.b1-x86_64-linux-gnu.tar.bz2
2e57d533adf05b102e812239ccf546ee6e1c051e xsde-3.2.0.b1-i686-macosx.tar.bz2
9fa4e25c06313afa0a8f93fffd365c511a0786fc xsde-3.2.0.b1-i686-windows.zip
Enjoy,
Boris
More information about the xsde-announcements
mailing list