[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