[xsd-announcements] XSD 4.2.0 released

Boris Kolpackov boris at codesynthesis.com
Thu Oct 5 09:35:22 EDT 2023

We have released XSD version 4.2.0.

The complete list of the NEWS file entries for this release is included
below. A big thank you to everyone who helped test (or used) the pre-
release snapshots. It took a long time to get this release out and we
appreciate your patience.

Source code and binary distribution packages for this release are
available from:


Note that due to the large gap between this and the previous release
(4.0.0) there is some discontinuity in the supported binary packages.
As a result, the download page for version 4.0.0 is preserved to
provide a transition period:


Note also that version 4.1.0 was never released. It was skipped due
to a minor versioning scheme adjustment in the pre-release component
when migrating to build2.

For the list of supported platforms and compilers see:


NEWS file entries for XSD version 4.2.0:

  * In this version we have switched to the build2 build system. For the
    step-by-step instructions on how to build XSD from source on all the
    major platforms, see:


  * In this version we have changed the default C++ standard that is used
    by the generated code from C++98 to C++11. While you can still request
    C++98 with the --std=c++98 option, note that this is the last release
    that supports the C++98 standard and the next release will require C++11
    or later (in fact, building the XSD compiler itself already requires
    C++11 or later). Note also that the --std option now recognizes the
    c++14, c++17, c++20, and c++23 additional values.

  * This version will be the last release that supports Xerces-C++ earlier
    than 3.1.0 and the next release will require Xerces-C++ 3.1.0 or later.

  * New --file-list-only option that allows only writing the list of C++
    files that would be generated without actually generating them.

  * The --file-list option now recognizes the `-` value as a request to write
    to stdout.

  * New --dep-file option that allows specifying the dependency file name.
    It also allows writing the dependency information to stdout by specifying
    `-` as this option's value.

  * This version contains a large number of bug fixes and minor improvements
    that have accumulated over the years.


  * Support for abstract XML Schema types. The corresponding C++ classes now
    have the _clone() member function declared pure virtual which prevents
    the construction of instances of such types.

    Note that if after upgrading to this version you start getting C++
    compile errors in the generated code with diagnostics saying that a
    type cannot be instantiated because _clone() is pure virtual, then
    it's a strong indication that this type (or its base) is polymorphic
    and needs to be marked as such (see --polymorphic-type* options).

  * New base_string() accessors in the xml_schema::{string,uri} types that
    return the underlying string.

  * Support for `ucc` (upper-camel-case) value in the --function-naming

  * New C++/Tree `secure` example (xsd-examples/cxx/tree/secure/) shows how
    to perform more secure XML parsing by disabling the XML External Entity
    (XXE) Processing. See the accompanying README file for details.

More information about the xsd-announcements mailing list