[xsd-users] XSD 3.3.0 released

Sumant Tambe sutambe at dre.vanderbilt.edu
Wed Apr 28 11:18:09 EDT 2010


Hi Boris,

Does XSD make use of new C++0x features such as rvalue references, which 
are now available in VS2010 and GNU g++ 4.5? If not already there, what 
is the plan going forward?

Thanks,

Sumant.

Boris Kolpackov wrote:
> Hi,
> 
> We have released XSD 3.3.0. The NEWS file entries for this release
> are as follows:
> 
>   * New option, --char-encoding, allows you to specify the character encoding
>     that should be used in the generated code. Valid values for the 'char'
>     character type are 'utf8' (default), 'iso8859-1' (new), 'lcp' (Xerces-C++
>     local code page), and 'custom' (provides support for custom encodings). 
>     Note that if you use a non-default character encoding and include some 
>     libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly, then you will 
>     need to first include the correct xsd/cxx/xml/char-<enc>.hxx header, 
>     where <enc> is iso8859-1, lcp, etc. This mechanism replaces the 
>     XSD_USE_LCP macro.
> 
>     For the wchar_t character type the only valid value for this option is 
>     'auto' and the encoding is automatically selected between UTF-16 and 
>     UTF-32, depending on the wchar_t type size.
> 
>   * When the XSD compiler is built with Xerces-C++ 3.1.0 or later, the
>     handling  of multiple imports for the same namespace is enabled. Before,
>     all subsequent imports for a namespace were ignored which caused errors
>     in some schemas. Note that if your application has XML Schema validation
>     enabled, then you will also need to build it with Xerces-C++ 3.1.0 or
>     later to take advantage of this feature.
> 
>   * 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).
> 
>   * Warning id's have changed to start with a letter identifying the
>     component issuing the warning. F - compiler frontend, D - compiler
>     driver, P - C++/Parser mapping, T - C++/Tree mapping.
> 
>   * Strings used to match regular expressions supplied with the
>     --namespace-regex and --anonymous-regex options now include the file 
>     component for the schema being compiled.
> 
>   * The XSD_NO_EXPORT macro can be used to omit code generated with the
>     --export/import-maps and, for C++/Tree, --generate-xml-schema options
>     during C++ compilation. This may be useful if you would like to use 
>     the same generated code across multiple platforms.
> 
>  C++/Tree
> 
>   * New option, --generate-element-type, triggers the generation of types
>     instead of parsing/serialization functions for root elements. This
>     is primarily useful to distinguish object models with the same root
>     type but with different root elements. For more information, refer
>     to the messaging example and Section 2.9.1, "Element Types" in the
>     C++/Tree Mapping User Manual. To support the customization of the 
>     element type naming the --element-type-regex option has been added.
>     See the NAMING CONVENTION section in the compiler command line manual
>     (man pages) for details.
> 
>   * New option, --generate-element-map, triggers the generation of a root
>     element map. The element map allows uniform parsing and serialization
>     of multiple root elements. This option can only be used together with
>     --generate-element-type. For more information, refer to the messaging
>     example and Section 2.9.2, "Element Map" in the C++/Tree Mapping
>     User Manual.
> 
>   * Prior to this version, if the --generate-polymorphic option is 
>     specified, the compiler treats all types as potentially polymorphic.
>     Now by default only type hierarchies used in substitution groups and 
>     those explicitly declared polymorphic with the new --polymorphic-type
>     option are treated as polymorphic. This results in smaller and faster
>     generated code. If you would like to continue using the old behavior,
>     you will need to specify --polymorphic-type-all. For more information,
>     on this change see Section 2.11, "Mapping for xsi:type and Substitution
>     Groups" in the C++/Tree Mapping User Manual.
> 
>   * New option, --generate-detach, triggers the generation of detach 
>     functions for required elements and attributes. For optional and 
>     sequence cardinalities the detach functions are now provided by the 
>     respective containers even without this option. These functions, for 
>     example, allow one to move sub-trees in the object model either within
>     the same tree or between different trees without copying. For more 
>     information, refer to Section 2.8 "Mapping for Local Elements and 
>     Attributes" in the C++/Tree Mapping User Manual.
> 
>   * New option, --export-xml-schema, causes the compiler to export/import
>     types in the XML Schema namespace using the export symbol provided
>     with the --export-symbol option.
> 
>   * New example, embedded, shows how to embed the binary representation of
>     the schema grammar into an application and then use it to parse and 
>     validate XML documents.
> 
>   * New example, compression, shows how to compress an XML document during 
>     serialization and decompress it during parsing using the zlib library.
> 
>   * New example, custom/mixed, shows how to use type customization to parse 
>     and serialize mixed content.
> 
>   * The streaming example has been extended to show how to perform stream-
>     oriented, partially in-memory XML processing using the C++/Tree mapping.
>     With the partially in-memory parsing and serialization only a part of
>     the object model is in memory at any given time. With this approach one
>     can process parts of the document as they become available as well as 
>     handle documents that are too large to fit into memory.
> 
>   * New default/fixed value initialization code. Now the default/fixed values
>     are parsed by the XSD compiler at compile time instead of the standard
>     parsing code at runtime. This will allow the compilation of schemas that 
>     use the default/fixed values without support for XML parsing 
>     (--suppress-parsing option).
> 
>   * Empty XML Schema enumeration values are now mapped to the 'empty' C++ 
>     enumerator name instead of 'cxx'.
> 
>   * XML Schema union types with members that are enumeration types are 
>     automatically converted to equivalent enumeration types with a union 
>     of all the members' enumerators.
> 
> This release also includes a large number of bug fixes and performance
> improvements which should be especially apparent when compiling large and
> complex schemas.
> 
> The release also adds support for a range of new operating system and C++
> compiler versions, including:
> 
>   * AIX 6.x
>   * Mac OS X 10.6 "Snow Leopard"
>   * Windows 7,
>   * Windows Server 2008
> 
>   * Visual Studio 2010 (10.0)
>   * GNU g++ 4.5.0
>   * Intel C++ 11
>   * Sun Studio 12.1
>   * IBM XL C++ 11
> 
> In particular, Visual Studio 2010 (10.0) project and solution files are 
> provided for all the examples.
> 
> The XSD source code is now tracked with git and the public, read-only
> repository (including the web interface) is available at:
> 
> http://scm.codesynthesis.com
> 
> In particular, the repository allows you to view a more detailed change 
> history between XSD 3.2.0 and this version.
> 
> 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:
> 
> ebd8f13f164dafa7c4a107686a1402bbfb61c2c2  xsd-3.3.0.tar.bz2
> d773c71380651365d2f309e529b0156af030d56e  xsd-3.3.0+dep.tar.bz2
> 
> 5beddcc360ca7916535f864c8fb8a661f6af5ce8  xsd-3.3.0-powerpc-aix.tar.gz
> 51b31adc735f0f6c93b2a8bdf7d7802e4884487b  xsd_3.3.0-1_i386.deb
> e818219a1f3acd2735aa1799bdd4873c3141f998  xsd-3.3.0-1.i686.rpm
> 01f2462d04b3b2978aba2e8bb26305b4ba868e9d  xsd-3.3.0-i686-linux-gnu.tar.bz2
> b9d87369a9437c350be9cb9200e89b5b4fe1252e  xsd_3.3.0-1_amd64.deb
> 4922c6a0609039033d780222badaa78700137e6e  xsd-3.3.0-1.x86_64.rpm
> f265131eee1f3565041758fca457d9016a634dc6  xsd-3.3.0-x86_64-linux-gnu.tar.bz2
> c580d1a0c9efdd9ac00d554569c43c8be979a0aa  xsd-3.3.0-ia64-hpux.tar.gz
> d5d98d219489239e7007e88365ca3d3ecec95aad  xsd-3.3.0-i686-macosx.tar.bz2
> afa97317653f8438bcea32f73d9ee3f3ce57cf40  xsd-3.3.0-powerpc-macosx.tar.bz2
> daac8faadb264d01b1f035a59d0f762c5f31c8c6  xsd-3.3.0-sparc-solaris.tar.gz
> 9be1e8468dd6bb180a877143044bf07918a74aac  xsd-3.3.0-i686-solaris.tar.gz
> 4d5ed0f88b2ac45fb596b5e56bb1169f3ad19550  xsd-3.3.0-i686-windows.zip
> 203cab48618296819fbf518c36904ee9b778abf3  xsd-3.3.msi
> 
> Last but not least, thanks to all the individuals who reported bugs, sent
> suggestions, and tested the alpha and beta releases. Unfortunately, the
> list of all who helped would be too long to include in this announcement.
> 
> Enjoy,
> 	Boris



More information about the xsd-users mailing list