[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