[xsd-announcements] XSD 3.3.0 released
Boris Kolpackov
boris at codesynthesis.com
Wed Apr 28 06:01:59 EDT 2010
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-announcements
mailing list