From a6d9c8e081b5d7a30bff35b3816024fc231bd532 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 27 Sep 2023 08:07:54 +0200 Subject: Move NEWS file to root of repository, symlink from xsd/ and libxsd/ --- NEWS | 1265 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ libxsd/NEWS | 2 +- xsd/NEWS | 1266 +---------------------------------------------------------- 3 files changed, 1267 insertions(+), 1266 deletions(-) create mode 100644 NEWS mode change 100644 => 120000 libxsd/NEWS mode change 100644 => 120000 xsd/NEWS diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..4b642a6 --- /dev/null +++ b/NEWS @@ -0,0 +1,1265 @@ +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: + + https://codesynthesis.com/products/xsd/doc/install-build2.xhtml + + * 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 recognize 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. + +C++/Tree + + * 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. + + * 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 + option. + + * 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. + +Version 4.1.0 + + * This version was never released. It was skipped due to a minor versioning + scheme adjustment in the pre-release component when migrating to build2. + +Version 4.0.0 + + * Xerces-C++ 2-series (2.8.0 and earlier) is no longer supported. + + * Visual Studio 2003 (7.1) is no longer supported. + + * HP aCC3 (HP-UX/PA-RISC) is no longer supported. + + * Oracle/Berkeley DB XML support has been removed since it no longer + supports the Xerces-C++-based document access. + + * New option, --std, specifies the C++ standard that the generated code + should conform to. Valid values are c++98 (default) and c++11. + + The C++ standard affects various aspects of the generated code that are + discussed in more detail in mapping-specific documentation (guides and + manuals). Overall, when C++11 is selected, the generated code relies on + the move semantics and uses std::unique_ptr instead of deprecated + std::auto_ptr. See also the documentation for the --std option in the + XSD compiler command line manual (man pages). + + * New option, --fat-type-file, triggers the placement of code corresponding + to global elements into type files instead of schema files in the file- + per-type mode. This option is primarily useful when trying to minimize + the amount of object code that is linked to an executable by packaging + compiled generated code into a static (archive) library. + +C++/Tree + + * Support for ordered types. C++/Tree flattens nested compositors which + sometimes can result in the loss of element ordering information that + could be significant to the application. Ordered types address this + problem. For more information, refer to Section 2.8.4, "Element Order" + in the C++/Tree Mapping User Manual. + + * Support for mixed content in ordered types. For more information, refer + to Section 2.13, "Mapping for Mixed Content Models" in the C++/Tree + Mapping User Manual. + + * xml_schema::type represents anyType content as a DOM fragment, similar + to wildcards. For more information, refer to Section 2.5.2, "Mapping + for anyType" in the C++/Tree Mapping User Manual. + + * xml_schema::simple_type represents anySimpleType content as a text + string. For more information, refer to Section 2.5.3, "Mapping for + anySimpleType" in the C++/Tree Mapping User Manual. + + * Improved streaming example that now provides better XML namespace + handling and supports streaming parsing and serialization at multiple + document levels. + + * New option, --generate-dep, triggers the generation of the make + dependency files (.d) for the generated C++ files. Other options + controlling dependency generation are: --generate-dep-only, + --dep-phony, --dep-target, --dep-suffix, and --dep-regex. For + details on this functionality, refer to the XSD compiler command + line manual (man pages). + + * New option, --suppress-assignment, suppresses the generation of copy + assignment operators for complex types. If this option is specified, + the copy assignment operators for such types are declared private and + left unimplemented. + + * Binary representation now stores string-based enumerations as integer + values corresponding to C++ enumerators instead of string literals. + + * Binary representation now pools polymorphic type-id strings in an + implicit string pool. The string pool support can also be used to + pool strings in other situations. For example, you can implement + string insertion/extraction operators for your stream to pool all + strings. This can be useful if your documents contain a large number + of repetitive strings. + + * New option, --polymorphic-plate, allows the creation of multiple + polymorphic map plates in the same application. For details, refer + to the XSD compiler command line manual (man pages). + + * To get the DOM association in the copy of an object model tree one + now needs to explicitly pass the xml_schema::flags::keep_dom flag as + the second argument to the copy constructor or clone() function. + +Version 3.3.0 + + * 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-.hxx header, + where 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. + +Version 3.2.0 + + * New option, --disable-warning, disables printing of a warning with + the specified id. Specifying 'all' for the warning id disables all + warnings. + + * New options, --export-maps and --import-maps, provide support for + splitting a polymorphic type hierarchy across several Win32 DLLs. + See the compiler command line manual (man pages) for details. + + C++/Tree + + * During serialization the generated code automatically assigns + generic prefixes (p1, p2, etc) to XML namespaces used in the + vocabulary and for which no custom prefix-namespace mapping + was provided via the xml_schema::namespace_infomap argument. + The xml_schema::namespace_infomap argument in the serialization + functions is now default-initialized to an empty map. The + xml_schema::no_namespace_mapping and xml_schema::xsi_already_in_use + exceptions have been removed. + + * New example, performance, measures the performance of parsing and + serialization. This example also shows how to structure your code + to achieve the maximum performance for these two operations. + + * New example, xpath, shows how to use the C++/Tree mapping together + with XPath. + + * New options, --one-accessor-regex, --opt-accessor-regex, + --seq-accessor-regex, --one-modifier-regex, --opt-modifier-regex, + and --seq-modifier-regex, allow specification of transformations + for accessor and modifier function names for elements and attributes + with specific cardinalities. For more information see the NAMING + CONVENTION section in the compiler command line manual (man pages). + + * Support for comparison (--generate-comparison) and printing + (--generate-ostream) of polymorphic object models. + + * New serialization flag, xml_schema::flags::dont_pretty_print, + disables extra spaces and new lines that make the resulting XML + slightly bigger but easier to read. + + * New example, custom/double, shows how to customize parsing and + serialization code for the xsd:double XML Schema built-in type. + It can be used as a guide on how to customize built-in XML Schema + types that are mapped to fundamental C++ types. + + * Support for fractionDigits and totalDigits facets in serialization + of types derived from xsd:decimal. + + * New set of compile-time macros that control how the xsd:float, + xsd:double, and xsd:decimal types are serialized. The following + macros control the format: + + XSD_CXX_TREE_FLOAT_FIXED + XSD_CXX_TREE_FLOAT_SCIENTIFIC + XSD_CXX_TREE_DOUBLE_FIXED + XSD_CXX_TREE_DOUBLE_SCIENTIFIC + + The following macros control the precision: + + XSD_CXX_TREE_FLOAT_PRECISION_MAX + XSD_CXX_TREE_FLOAT_PRECISION + XSD_CXX_TREE_DOUBLE_PRECISION_MAX + XSD_CXX_TREE_DOUBLE_PRECISION + XSD_CXX_TREE_DECIMAL_PRECISION_MAX + XSD_CXX_TREE_DECIMAL_PRECISION + + If the *_PRECISION_MAX macro is defined then the maximum number of + potentially significant decimal digits that the type can represent + is used. Otherwise, if the *_PRECISION macro is defined then its + value is used. By default the precision is set to the number of + decimal digits that the type can represent without change. For + more information on these options, refer to the following paper: + + http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf + + The old macro, XSD_FP_ALL_DIGITS, that was equivalent to defining + all three *_PRECISION_MAX macros has been removed. + + An alternative to using these macros is to customize the floating + point type as shown in the custom/double example. + + * An additional constructor is generated in situations where a type + contains one or more required element of complex type (that is, + it itself contains elements or attributes). In this constructor, + initializers for such elements are passed as std::auto_ptr and the + newly created instance is directly initialized with and assumes + ownership of the pointed to objects. This constructor is a logical + addition to the non-copying modifiers that were introduced in the + previous version. + + * Extra conversion operators in the fundamental_base class template + which is used to emulate inheritance from fundamental types are now + disabled by default since they cause problems on several compilers. + To enable them compile your code with the XSD_TREE_EXTRA_FUND_CONV + macro defined. + + C++/Parser + + * New options, --generate-xml-schema and --extern-xml-schema, trigger + generation of the mapping for the XML Schema namespace to a separate + header file and inclusion of that header into other generated header + files instead of generating the necessary declarations inline, + respectively. See the compiler command line manual (man pages) for + details. + + * New example, performance, measures the performance of XML parsing. + This example also shows how to structure your code to achieve the + maximum performance for this operation. + + * Type map files can now include comments. A comment starts with # + and ends with a new line or end of file. To specify a name that + contains # enclose it in "". + + * In type map files the optional argument type now defaults to the + return type if the return type ends with * or & (that is, it is + a pointer or a reference) and 'const return type&' otherwise. + + * The interface for polymorphic parsing has been simplified. Calling the + *_parser() functions multiple times to specify several parsers is no + longer supported. Instead you need to pass the xml_schema::parser_map + object which contains the parsers. For more information refer to + Section 5.4, "Support for Polymorphism" in the C++/Parser Mapping + Getting Started Guide. + + * The use of virtual inheritance has been reduced which results in a + much smaller object code size (more than factor of 2 on some tests) + and faster C++ compilation with less RAM used. + + * The low-level Expat-specific parsing API (parse_begin() and parse_end()) + has been extended to provide XML and XML Schema error translation to + exceptions or error handler calls. See Section 7.2, "Expat Document + Parser" in the C++/Parser Mapping Getting Started Guide for more + information. + +Version 3.1.0 + + * New option, --file-per-type, triggers generation of a separate set + of C++ files for each type defined in XML Schema. This compilation + mode is primarily useful when some of your schemas cannot be compiled + separately or have cyclic dependencies which involve inheritance. + Other new options that are useful in this compilation mode are + --type-file-regex, --type-file-regex-trace, and --file-list. See the + compiler command line manual (man pages) for more information. + + * New option, --options-file, allows additional command line options + to be provided in files, with one option per line. + + * New option, --reserved-name, allows insertion of additional names + with optional replacements to the list of names that should not be + used as identifiers. See the compiler command line manual (man pages) + for details. + + * New options, --location-map, --location-regex, and + --location-regex-trace, allow re-mapping of schema locations + specified in the include and import elements without modifying the + schema files. See the compiler command line manual (man pages) for + more information. + + * New option, --guard-prefix, allows specification of a prefix that + should be added to generated header inclusion guards. + + * New option, --file-list, triggers creation of a file with a list of + generated C++ files. This option is primarily useful in the file-per- + type compilation mode (--file-per-type) to create a list of generated + C++ files, for example, as a makefile fragment. Other new options + that are useful with --file-list are --file-list-prologue, + --file-list-epilogue, and --file-list-delim. See the compiler command + line manual (man pages) for more information. + + * Support for the upcoming Xerces-C++ 3.0.0 release. + + C++/Tree + + * New option, --generate-intellisense, triggers generation of workarounds + for IntelliSense bugs in Visual Studio 2005 (8.0). When this option is + used, the resulting code is slightly more verbose. IntelliSense in + Visual Studio 2008 (9.0) does not require these workarounds. Support + for IntelliSense in Visual Studio 2003 (7.1) is improved with this + option but is still incomplete. + + * New options, --type-naming and --function-naming, allow specification + of the type and function naming conventions that should be used in the + generated code. Supported values for --type-naming are: knr (K&R), ucc + (upper-camel-case), and java. Supported values for --function-naming + are: knr (K&R), lcc (lower-camel-case), and java. For more information + see the NAMING CONVENTION section in the compiler command line manual + (man pages). + + * New options, --type-regex, --accessor-regex, --modifier-regex, + --parser-regex, --serializer-regex, and --enumerator-regex, allow + specification of transformations for type, accessor function, + modifier function, parsing function, serialization function, and + enumerator names in order to produce the generated code using a + custom naming convention. For more information see the NAMING + CONVENTION section in the compiler command line manual (man pages). + + * Generated list classes now provide a complete set of constructors and + conform to the standard C++ sequence interface. + + * String-based types now provide two extra constructors that expect a + C string and std::string as their arguments. This allows direct + initialization of string-based types from string literals. + + * New implementations of the XML Schema date/time types (date, dateTime, + duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, and time) that + represent the information in the numerical form. + + * New binary serialization examples: binary/boost, which shows how to + save/load the object model to/from a custom format using the Boost + serialization library as an example, and binary/xdr, which shows how to + save/load the object model to/from XDR (eXternal Data Representation) + binary format using the XDR API provided as part of Sun RPC. + + * The non-copying modifier functions can now be used to assemble object + models from scratch. For more information see Section 4.4, "Creating + the Object Model from Scratch" in the C++/Tree Mapping Getting Started + Guide as well as Section 2.8, "Mapping for Local Elements and Attributes" + in the C++/Tree Mapping User Manual. + + * Doxygen documentation was added to the XSD runtime for the built-in XML + Schema types, exceptions, etc. This allows linking of the generated + documentation to the XSD runtime documentation using the Doxygen tags + mechanism. The Doxygen configuration file for the XSD runtime is + provided in the documentation/cxx/tree/reference/ directory. + + * Support for customization of anyType. Because anyType is a base type + for every generated type, customizing it allows one to implement custom + functionality that spans the entire type system. See the comments + example in the examples/cxx/tree/custom/ directory. + + * New option, --omit-default-attributes, triggers generation of extra + checks that exclude attributes with default and fixed values from the + serialized XML documents. + + * The parsing functions that used to read from DOMInputSource were changed + to use InputSource to ease support of Xerces-C++ 3 and 2 series in the + same code base. + + * The parsing function that used to parse DOMDocument* was changed to + parse xml_schema::dom::auto_ptr& instead. If the keep_dom + and own_dom flags are specified then this parsing function resets the + passed automatic pointer and the returned object model assumes + ownership of the DOM document. xml_schema::dom::auto_ptr is a simple + automatic pointer for Xerces-C++ DOM with the same interface as + std::auto_ptr. + + * The xml_schema::tree_node_key DOM user data key was moved to + xml_schema::dom::tree_node_key. + + C++/Parser + + * New option, --generate-polymorphic, triggers generation of polymorphism- + aware code. This option should be used on XML vocabularies which use + xsi:type and/or substitution groups. For more information see Section + 5.4, "Support for Polymorphism" in the C++/Parser Mapping Getting + Started Guide we well as the polymorphism and polyroot examples in the + examples/cxx/parser/ directory. + + * The date/time types (date, dateTime, gDay, gMonth, gMonthDay, gYear, + gYearMonth, and time) now represent time zone in the numerical form. + + * In order to support parsing of polymorphic XML documents, the signatures + of the start_* functions (_start_element, _start_any_element, and + start_root_element) have changed to include a third argument of type + const ro_string*. This argument contains the resolved type name and + namespace in case the xsi:type attribute was specified. + +Version 3.0.0 + + * Anonymous type morphing (automatic type naming) is now performed by + default in both mappings. The --morph-anonymous option does not have + any effect but is preserved for backwards compatibility. A new option, + --preserve-anonymous, disables anonymous type morphing. This option is + useful together with --show-anonymous if you want to make sure your + schemas do not have any anonymous types. + + * A number of bugs fixed in both C++/Tree and C++/Parser mappings. + + C++/Tree + + * The new C++/Tree Mapping Getting Started Guide is available in the + documentation/cxx/tree/guide/ directory. + + * The type definitions for local elements and attributes in the form + name::type have been changed to name_type. For example, an element + bar in type foo with maxOccurs="unbounded" used to have its iterator + type defined as foo::bar::iterator. With this change it becomes + foo::bar_iterator. Furthermore, the container type name for sequence + elements has changed from foo::bar::container to foo::bar_sequence + and for optional elements and attributes from foo::bar::container + to foo::bar_optional. This is a backwards incompatible change and + may require application code adjustments (the C++ compiler will + pinpoint the affected places). + + * New option, --generate-doxygen, triggers generation of documentation + comments suitable for extraction by the Doxygen documentation system. + Documentation from annotations is added to the comments if present in + the schema. + + * New option, --generate-wildcard, triggers generation of the new + wildcard (any and anyAttribute) mapping. This mapping represents the + content matched by wildcards as DOM fragments. For more information on + the new mapping see Section 2.12, "Mapping for any and anyAttribute" + in the C++/Tree Mapping User Manual as well as the wildcard example in + the examples/cxx/tree/ directory. + + * New option, --generate-comparison, triggers generation of comparison + operators (== and !=) for complex types. Comparison is performed + memberwise. + + * Support for the RPC XDR binary stream in addition to ACE CDR. + + * New constructor is generated for complex types with ultimate bases + that are simple types and can be default-initialized. This constructor + includes initializers for all required members but omits the initializer + for the base type. See Section 2.7, "Mapping for Complex Types" in the + C++/Tree Mapping User Manual for more information. + + * Support for polymorphic binary serialization and extraction. Note that + the semantics of the --generate-insertion and --generate-extraction + options has changed. See the the compiler command line manual (man + pages) for details. + + * New parsing function with the DOMDocument* argument and the own_dom + flag allow the tree to assume the ownership of the DOM document + being parsed when DOM association is requested (keep_dom flag). + See the C++/Tree Mapping User Manual for more information. + + * New example, multiroot, shows how to handle XML vocabularies with + multiple root elements. + + * New example, caching, shows how to parse several XML documents while + reusing the underlying XML parser and caching the schemas used for + validation. + + * The mapping of built-in XML Schema type decimal has changed from + long double to double. The old mapping can be obtained by providing + a custom mapping for this type. + + * The xml_schema::errors type which is used in the xml_schema::parsing + and xml_schema::serialization exceptions has been renamed to + xml_schema::diagnostics and extended to include warnings in addition + to errors. + + * Serialization operators now clear the element being serialized to from + existing child nodes and attributes (except for special attributes such + as prefix-namespace mappings, etc.). + + * Improved built-in type parsing, including support for normalization and + whitespace collapsing. + + * Optimizations for the generated code size and compilation time, + including space optimizations for polymorphic parsing and + serialization. Optimizations for XML parsing speed. + + C++/Parser + + * The C++/Parser mapping have been significantly redesigned. See the new + Getting Started Guide in documentation/cxx/parser/guide/ for details. + + * The new C++/Parser Mapping Getting Started Guide is available in the + documentation/cxx/parser/guide/ directory. + + * The mapping now provides parser implementations for all built-in XML + Schema types. See Chapter 6, "Built-In XML Schema Type Parsers" in + the C++/Parser Mapping Getting Started Guide for more information. + + * The mapping now supports automatic generation of sample parser + implementations and a test driver. The --generate-noop-impl option + triggers generation of a sample implementation with empty function + bodies. The --generate-print-impl option triggers generation of a + sample implementation that prints the data stored in XML to STDOUT. + The --generate-test-driver option trigger generation of a test driver. + For more information on this feature see the compiler command line + manual (man pages) and the generated example in the examples/cxx/parser/ + directory. Other relevant options include: --force-overwrite, + --root-element-first, --root-element-last, and --root-element. + + * New example, wildcard, shows how to parse the XML data matched by + XML Schema wildcards (any and anyAttribute). + + * The xml_schema::document parser has been extended with overridable + virtual functions start_root_element and end_root_element to support + parsing of XML vocabularies with multiple document roots. See the + multiroot example in the examples/cxx/parser/ directory for more + information. + + * The xml_schema::errors type which is used in the xml_schema::parsing + exception has been renamed to xml_schema::diagnostics and extended to + include warnings in addition to errors. + +Version 2.3.1 + + * The compiler is now capable of translating multiple schemas with + one invocation. + + * New option, --sloc-limit, allows one to limit the amount of the + generated code. + + * New option, --proprietary-license, instructs the compiler not to + include the GPL banner in each generated file. Instead a short + notice about a required proprietary license is generated. You + should not use this option unless you have obtained a proprietary + license from Code Synthesis. + + * The default encoding for the 'char' character type is now UTF-8. + To get the previous behavior (local code page via the Xerces-C++ + transcode functions) define the XSD_USE_LCP preprocessor macro + when compiling your source code. + + C++/Tree + + * The --parts option has been improved to split generated code more + evenly by analyzing the complexity of the generated schema constructs. + + * Ability to customize serialization, std::ostream, and binary + insertion/extraction operators. See examples/cxx/tree/custom/wildcard + for an example on how to handle XML Schema wildcards (xsd:any and + xsd:anyAttribute) by customizing the parsing constructor and + serialization operators. + + * Optimizations for the run-time memory consumption. + + * Optimizations for space in the generated code. + + * Number of bug fixes. + + C++/Parser + + * Proper handling of an xsd:any nested content. Nested elements, + attributes, and text are reported via _any_* hooks of the current + parser. + + * Number of bug fixes, mostly in the generated validation code. + + +Version 2.3.0 + + * Name conflicts across type inheritance hierarchies are now detected + and resolved via name escaping. + + C++/Tree + + * New option, --suppress-parsing, suppresses generation of the parsing + constructors and functions. This can be used to minimize the generated + code footprint when parsing from XML is not used. + + * New option, --generate-forward, triggers generation of a forward + declaration header file for types defined in the schema. A set of + --fwd-* options that control the resulting file name as well as + prologue and epilogue code are available. + + * New option, --generate-xml-schema, triggers generation of the mapping + for the XML Schema namespace to a separate header file. See the man + pages for details and examples/cxx/tree/custom/calendar for an example. + + * New option, --extern-xml-schema, triggers inclusion of a header + file for the XML Schema namespace instead of generating the + necessary declarations inline. See the man pages for details and + examples/cxx/tree/custom/calendar for an example. + + * New options, --custom-type and --custom-type-regex, instruct the + compiler to use custom C++ type for a type defined in the schema. + The standard mapping can still be generated (with a different name) + usually to be used as a base. Built-in XML Schema types can be + customized using this mechanism. See the man pages for details and + examples/cxx/tree/custom/* for examples. + + * The generated parsing constructors and serialization operators have + been changed to use the Xerces-C++ DOM elements and attributes + instead of the internal wrapper types. This should provide easier + integration with other code and libraries that use the Xerces-C++ + DOM types such as Berkeley DB XML. + + * New example, examples/cxx/tree/dbxml, shows how to use the C++/Tree + mapping on top of the Berkeley DB XML database. + + C++/Parser + + * Validation of the attribute structure in the generated code. + + * Validation of the character content models including mixed content in + the generated code. + + * Validation of the built-in XML Schema types. + + * Optimizations for space and time in the generated code. In particular + data coping during parsing and validation was significantly reduced. + + +Version 2.2.0 + + * Detection of a version mismatch between the generated code and + the runtime. + + C++/Tree + + * Escaping of a global element name that conflicts with a global type + name. This is a backwards-incompatible change. Previous versions + map them to the same name. + + * New options, --generate--insertion and --generate-extraction, + trigger generation of (binary) data representation stream + insertion and extraction operators, respectively. This allows + one to serialize/deserialize in-memory representation to/from + data representation streams such as XSD, CDR, etc. ACE CDR + streams are supported out of the box (see the binary example). + User-supplied streams can be used via an adaptation layer. + + * New serialization flag, no_xml_declaration, instructs the XML + serialization functions to omit an XML declaration. This is useful + for streaming serialization (see the streaming example). + + * Optimizations to reduce generated code size. + + + C++/Parser + + * New options, --generate-validation and --suppress-validation, + trigger and suppress generation of the validation code, + respectively. The validation code is the implementation of the + XML Schema validation in the generated code (also known as + "perfect" parser). In this version validation of the element + structure has been implemented. + + * New architecture for underlying XML parsers. This is a backwards- + incompatible change. Existing applications will have to be + modified. See examples for details. + + +Version 2.1.1 + + C++/Tree + + * New option, --namespace-map, allows direct mapping of XML Schema + namespaces to C++ namespaces without the use of regular expressions. + + * Further optimizations in the container code and enum mapping to + reduce generated code size. + + * Number of bug fixes in the generated code. + + + C++/Parser + + * New option, --namespace-map, allows direct mapping of XML Schema + namespaces to C++ namespaces without the use of regular expressions. + + +Version 2.1.0 + + * Automatic handling of forward inheritance. XML Schema allows + inheritance from yet undefined types while it is illegal to do + so in C++. Now the translator automatically handles forward + inheritance by re-arranging the schema during compilation. + + + C++/Tree + + * New enum mapping with support for inheritance. Enumerators are + now parsed using binary search instead of linear search. + + * Associated DOM nodes now retain "back" pointers to tree nodes. + + * Optimizations to reduce generated code size. + + + C++/Parser + + * Specialization for void. You can now use void as a hook argument + type if you don't want to pass any data between parsers. + + * Support for re-use of implementations of base parsers in derived + parsers using the mixin C++ idiom. See the examples/cxx/parser/mixin + for more information. + + * Support for uninitialized parser. If you don't provide a parser + for element/attribute, that element/attribute will be ignored + during parsing. + + +Version 2.0.0 + + * New cardinality calculator. This improves support for schemas that + use complex structures with repeated elements, e.g., + + + + + + + + + + + + + + + + * New identifier escaping code. With this feature xsd generates proper + code for schemas that use the same name for an element and an attribute + in the same type or use several elements/attributes with different + qualified names but with the same local name, e.g., + + + + + + + + + + + + + + + + + + + + + + + + + + C++/Tree + + * New option, --generate-polymorphic, triggers generation of + polymorphism-aware code. Before this release xsd used to always + generate polymorphism-aware code. However, it appears to be quite + wasteful in terms of the generated code size (up to 40%). You will + now need to explicitly specify this option if you use substitution + groups or xsi:type. A warning is issued if this option is not + specified but the schema makes use of substitution groups. + + * New options, --root-element-first, --root-element-last, + --root-element-all, --root-element-none, and --root-element, control + generation of parsing and serialization functions. With these options + you can avoid generating extra code for global elements that are not + document roots. See the man pages for details. + + * New options, --parts and -parts-suffix, allows you to split generated + source code into a number of parts. This is useful when translating + large, monolithic schemas and a C++ compiler is not able to compile + the resulting source code at once (usually due to insufficient memory). + + * New option, --generate-default-ctor, triggers generation of default + constructors even for types that have required members. Required + members of an instance constructed using such a constructor are not + initialized and accessing them results in undefined behavior. Thanks + to Jean-Francois Dube for suggesting this + feature. + + * New option, --generate-from-base-ctor, triggers generation of + constructors that expect an instance of a base type followed by all + required members. Thanks to Jean-Francois Dube + for suggesting this feature. + + * Information scopes for attributes and elements with default/fixed values + now define the public static default_value function which allows one to + obtain the default/fixed value for the element/attribute. Thanks to + Dave Moss for suggesting this feature. + + * MSVC 7.1 has a limit on the length of the "if else if" chain. This + results in ICE when compiling generated code for enumerations with + a large number of values. This version addresses this issue. Thanks + to Cyrille Chépélov for reporting this and + suggesting a fix. + + + C++/Parser + + * The parser construction API has changed. Now, for element 'foo', + the name of the parser modifier function is 'foo_parser'. Likewise, + operator() for setting all parsers at once has been changed to the + 'parsers' function. + + +Version 1.9.0 + + C++/Tree + + * The size modifier function in the base64_binary and hex_binary + built-in types automatically adjusts capacity if needed. + + * More internal names (names that start with _xsd_) were made + private or protected. + + C++/Parser + + * Typedef for the parser base in the xml_schema namespace. + + C++/Parser-E + + * C++/Parser mapping optimized for embedded systems. For now it + is equivalent to 'cxx-parser --xml-parser expat'. + + +Version 1.8.0 + + * Moved to the build 0.2 series. + + C++/Tree + + * Support for default and fixed values in attributes. An optional + attribute with a default or fixed value is mapped to the One + cardinality class instead of the Optional cardinality class. + + * Mapping for base64Binary and hexBinary has improved. Now these + types support a basic buffer abstraction and perform automatic + encoding and decoding. + + * Internal names are protected. We've noticed (via bug reports) a + wide use of internal names (names that start with _xsd_) in user + code. This is not portable and instead you should use public + names. To prevent this from happening in the future we've made + all internal names protected. + + C++/Parser + + * Support for Expat as the underlying XML parser in addition to + Xerces-C++. This allows one to use the C++/Parser mapping in + memory-constrained environments such as embedded systems. To + select Expat instead of Xerces-C++ (default) add + '--xml-parser expat' to the command line. At the moment only + 'char' (UTF-8) is supported as the base character type when + Expat is selected. + + * The invalid_instance exception has been renamed to parsing. + + * Generic error_handler interface has been added in addition + to Xerces-C++-specific DOMErrorHandler. It allows you to + handle parsing errors and warnings without having to deal + with Xerces-C++ specifics. + + * The default error handling behavior has changed in parsing + functions. Instead of printing errors and warnings to STDERR, + the errors are now collected and thrown as part of the parsing + exception. + + * In parsing functions, the name, namespace arguments order has + been reversed to be consistent with the one used in parsing + hooks. + +Version 1.7.0 + + * Number of bug fixes in libxsd and the generated code. + + C++/Tree + + * Comprehensive XML Schema C++/Tree Mapping User Manual. + + * Basic support for union. A simple type that is defined using + derivation by union is mapped to a C++ class that derives from + string. + + * The _clone function has its arguments default-initialized. + + * The invalid_instance exception has been renamed to parsing. + + * Generic error_handler interface has been added in addition + to Xerces-C++-specific DOMErrorHandler. It allows you to + handle parsing/serialization errors and warnings without + having to deal with Xerces-C++ specifics. See the user + manual for more information. + + * The default error handling behavior has changed in parsing + and serialization functions. Instead of printing errors and + warnings to STDERR, the errors are now collected and thrown + as part of the parsing/serialization exception. See the user + manual for more information. + + * The optional and sequence containers now support operators ==, + !=, <, >, <=, and >=. + + * Flags argument has been added to serialization functions. The + only flag that is currently supported is dont_initialize. + + * Generated code cleanups. + + C++/Parser + + * Basic support for union. A simple type that is defined using + derivation by union is mapped to a C++ class template that + is just an alias for the generic parser. You are expected to + override the _characters function in your implementation. + + * Properties argument to parsing functions which allows to + programmatically specify schemas for instance document + validation. + + * Flags argument to parsing functions. The following flags + are supported: + + dont_validate - do not validate instance documents + dont_initialize - do not initialize the Xerces-C++ runtime + +Version 1.6.0 + + * Number of bug fixes in libxsd and the generated code. + + C++/Tree + + * Support for xsi:type and substitution groups in parsing and + serialization. See examples/cxx/tree/polymorphism for a code + sample. + + * Properties argument to parsing functions which allows to + programmatically specify schemas for instance document + validation. + + * Extra checks in parsing code which prevents construction + of inconsistent in-memory representation from invalid + instance documents. Should be useful when validation is + disabled. + + * Accessors and modifier were made normal member functions. + Before they were implemented via functors. + + * Workaround for g++-3.3 bug# 16650: + + http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16650 + + C++/Parser + + * All "service" functions were renamed to start with '_'. + This should prevent hiding of service functions by + elements/attributes with the same names. + +Version 1.5.0 + + * Number of bug fixes in libxsd and the generated code. + + C++/Tree + + * Basic support for inheritance-by-restriction in complex types. + + * The following parsing flags have been introduced: + + keep_dom - keep association with underlying DOM nodes + dont_validate - do not validate instance documents + dont_initialize - do not initialize the Xerces-C++ runtime + + * "Type-less content" such as mixed content models, xsd:anyType/ + xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported by + exposing corresponding DOM nodes (see the keep_dom parsing flag). + Note that only a subset of XML Schema xsd:any functionality is + supported. The compiler will issue diagnostics for unsupported + cases. See examples/cxx/tree/mixed for a code sample. + + C++/Parser + + * Support for inheritance-by-restriction in complex types. + + * "Type-less content" such as mixed content models, xsd:anyType/ + xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported + by forwarding parsing events to a set of "unexpected" hooks. + Note that only a subset of XML Schema xsd:any functionality is + supported. The compiler will issue diagnostics for unsupported + cases. See examples/cxx/parser/mixed for a code sample. + +Version 1.4.0 + + * Number of improvements and bug fixes in the diagnostics code. + + * libxsd has been reorganized to provide a clean split of code with + regards to char/wchar_t use. It should be possible to use libxsd + and the xsd-generated code on platforms that lack wchar_t support, + such as mingw. + + C++/Tree + + * Work around for g++ bug# 23206. + + * Support for xsd:list. + + * Type/member name conflicts are auto-resolved. Such conflicts + occur when a type and an element or attribute withing this type + share the same name. + + * XML Schema extension, the 'refType' attribute, allows one to + specify referenced type for xsd:IDREF and xsd:IDREFS data types. + See examples/cxx/tree/library for details. + + * New option, --morph-anonymous, allows automatic morphing + of anonymous types to named ones. See the man pages for + details. + + * New option, --namespace-regex-trace, allows one to trace the + namespace mapping process. See the man pages for details. + + * Mapping for optional elements/attributes (cardinality 0..1) + has changed in a backwards-incompatible way. In the previous + version you would write: + + Bar& bar = ... + + if (bar.foo.present ()) // test + { + Foo& foo (bar.foo ()); // get + + bar.foo (Foo (...)); // set + + bar.foo.reset (); // reset + } + + Now you would write it like this: + + if (bar.foo ().present ()) // test + { + Foo& foo (bar.foo ().get ()); // get + + bar.foo (Foo (...)); // set + + bar.foo ().reset (); // reset + } + + Or using the pointer notation: + + if (bar.foo ()) // test + { + Foo& foo (*bar.foo ()); // get + + bar.foo (Foo (...)); // set + + bar.foo ().reset (); // reset + } + + C++/Parser + + * Support for xsd:list. + + * Type/member name conflicts are auto-resolved. Such conflicts + occur when a type and an element or attribute withing this type + share the same name. + + * New option, --namespace-regex-trace, allows one to trace the + namespace mapping process. See the man pages for details. + +Version 1.3.0 + + * Numerous bug fixes. + + * The XML subsystem of libxsd has been reorganized to provide + a clean split of DOM and SAX functionalities. + + C++/Parser + + * New option, --morph-anonymous, allows automatic morphing + of anonymous types to named ones. See the man pages for + details. + + C++/Tree + + * Additional parser functions provide support for reading + from std::istream. + +Version 1.2.0 + + C++/Parser + + * New backend that generates the C++/Parser mapping. + +Version 1.1.1 + + all backends + + * Bug fixes in the filesystem path handling logic. + +Version 1.1.0 + + C++/Tree + + * New option, --generate-serialization, triggers generation of + serialization functions. Serialization functions convert an in-memory + representation back to XML. + + * xsd::cxx::tree::vector has been extended to closely follow std::vector + API. This allows you to access and modify element sequences as if they + were of type std::vector. + + * Generated constructors from xml::attribute and xml::element are made + explicit. + + * The library example was extended to showcase modification and + serialization of the in-memory representation. + + * New "XML Schema C++/Tree Mapping Serialization Guide" has an in-depth + treatment of the serialization mechanisms provided by xsd. + +Version 1.0.1 + + all backends + + * Improved diagnostics. + + * Bug fixes in the schema inclusion/importing logic. + + C++/Tree + + * Two new options: --include-with-brackets and --include-prefix + +Version 1.0.0 + + * First public release. diff --git a/libxsd/NEWS b/libxsd/NEWS deleted file mode 100644 index c51e267..0000000 --- a/libxsd/NEWS +++ /dev/null @@ -1 +0,0 @@ -See the common NEWS file in the XSD compiler package. diff --git a/libxsd/NEWS b/libxsd/NEWS new file mode 120000 index 0000000..0fae0f8 --- /dev/null +++ b/libxsd/NEWS @@ -0,0 +1 @@ +../NEWS \ No newline at end of file diff --git a/xsd/NEWS b/xsd/NEWS deleted file mode 100644 index 4b642a6..0000000 --- a/xsd/NEWS +++ /dev/null @@ -1,1265 +0,0 @@ -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: - - https://codesynthesis.com/products/xsd/doc/install-build2.xhtml - - * 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 recognize 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. - -C++/Tree - - * 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. - - * 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 - option. - - * 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. - -Version 4.1.0 - - * This version was never released. It was skipped due to a minor versioning - scheme adjustment in the pre-release component when migrating to build2. - -Version 4.0.0 - - * Xerces-C++ 2-series (2.8.0 and earlier) is no longer supported. - - * Visual Studio 2003 (7.1) is no longer supported. - - * HP aCC3 (HP-UX/PA-RISC) is no longer supported. - - * Oracle/Berkeley DB XML support has been removed since it no longer - supports the Xerces-C++-based document access. - - * New option, --std, specifies the C++ standard that the generated code - should conform to. Valid values are c++98 (default) and c++11. - - The C++ standard affects various aspects of the generated code that are - discussed in more detail in mapping-specific documentation (guides and - manuals). Overall, when C++11 is selected, the generated code relies on - the move semantics and uses std::unique_ptr instead of deprecated - std::auto_ptr. See also the documentation for the --std option in the - XSD compiler command line manual (man pages). - - * New option, --fat-type-file, triggers the placement of code corresponding - to global elements into type files instead of schema files in the file- - per-type mode. This option is primarily useful when trying to minimize - the amount of object code that is linked to an executable by packaging - compiled generated code into a static (archive) library. - -C++/Tree - - * Support for ordered types. C++/Tree flattens nested compositors which - sometimes can result in the loss of element ordering information that - could be significant to the application. Ordered types address this - problem. For more information, refer to Section 2.8.4, "Element Order" - in the C++/Tree Mapping User Manual. - - * Support for mixed content in ordered types. For more information, refer - to Section 2.13, "Mapping for Mixed Content Models" in the C++/Tree - Mapping User Manual. - - * xml_schema::type represents anyType content as a DOM fragment, similar - to wildcards. For more information, refer to Section 2.5.2, "Mapping - for anyType" in the C++/Tree Mapping User Manual. - - * xml_schema::simple_type represents anySimpleType content as a text - string. For more information, refer to Section 2.5.3, "Mapping for - anySimpleType" in the C++/Tree Mapping User Manual. - - * Improved streaming example that now provides better XML namespace - handling and supports streaming parsing and serialization at multiple - document levels. - - * New option, --generate-dep, triggers the generation of the make - dependency files (.d) for the generated C++ files. Other options - controlling dependency generation are: --generate-dep-only, - --dep-phony, --dep-target, --dep-suffix, and --dep-regex. For - details on this functionality, refer to the XSD compiler command - line manual (man pages). - - * New option, --suppress-assignment, suppresses the generation of copy - assignment operators for complex types. If this option is specified, - the copy assignment operators for such types are declared private and - left unimplemented. - - * Binary representation now stores string-based enumerations as integer - values corresponding to C++ enumerators instead of string literals. - - * Binary representation now pools polymorphic type-id strings in an - implicit string pool. The string pool support can also be used to - pool strings in other situations. For example, you can implement - string insertion/extraction operators for your stream to pool all - strings. This can be useful if your documents contain a large number - of repetitive strings. - - * New option, --polymorphic-plate, allows the creation of multiple - polymorphic map plates in the same application. For details, refer - to the XSD compiler command line manual (man pages). - - * To get the DOM association in the copy of an object model tree one - now needs to explicitly pass the xml_schema::flags::keep_dom flag as - the second argument to the copy constructor or clone() function. - -Version 3.3.0 - - * 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-.hxx header, - where 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. - -Version 3.2.0 - - * New option, --disable-warning, disables printing of a warning with - the specified id. Specifying 'all' for the warning id disables all - warnings. - - * New options, --export-maps and --import-maps, provide support for - splitting a polymorphic type hierarchy across several Win32 DLLs. - See the compiler command line manual (man pages) for details. - - C++/Tree - - * During serialization the generated code automatically assigns - generic prefixes (p1, p2, etc) to XML namespaces used in the - vocabulary and for which no custom prefix-namespace mapping - was provided via the xml_schema::namespace_infomap argument. - The xml_schema::namespace_infomap argument in the serialization - functions is now default-initialized to an empty map. The - xml_schema::no_namespace_mapping and xml_schema::xsi_already_in_use - exceptions have been removed. - - * New example, performance, measures the performance of parsing and - serialization. This example also shows how to structure your code - to achieve the maximum performance for these two operations. - - * New example, xpath, shows how to use the C++/Tree mapping together - with XPath. - - * New options, --one-accessor-regex, --opt-accessor-regex, - --seq-accessor-regex, --one-modifier-regex, --opt-modifier-regex, - and --seq-modifier-regex, allow specification of transformations - for accessor and modifier function names for elements and attributes - with specific cardinalities. For more information see the NAMING - CONVENTION section in the compiler command line manual (man pages). - - * Support for comparison (--generate-comparison) and printing - (--generate-ostream) of polymorphic object models. - - * New serialization flag, xml_schema::flags::dont_pretty_print, - disables extra spaces and new lines that make the resulting XML - slightly bigger but easier to read. - - * New example, custom/double, shows how to customize parsing and - serialization code for the xsd:double XML Schema built-in type. - It can be used as a guide on how to customize built-in XML Schema - types that are mapped to fundamental C++ types. - - * Support for fractionDigits and totalDigits facets in serialization - of types derived from xsd:decimal. - - * New set of compile-time macros that control how the xsd:float, - xsd:double, and xsd:decimal types are serialized. The following - macros control the format: - - XSD_CXX_TREE_FLOAT_FIXED - XSD_CXX_TREE_FLOAT_SCIENTIFIC - XSD_CXX_TREE_DOUBLE_FIXED - XSD_CXX_TREE_DOUBLE_SCIENTIFIC - - The following macros control the precision: - - XSD_CXX_TREE_FLOAT_PRECISION_MAX - XSD_CXX_TREE_FLOAT_PRECISION - XSD_CXX_TREE_DOUBLE_PRECISION_MAX - XSD_CXX_TREE_DOUBLE_PRECISION - XSD_CXX_TREE_DECIMAL_PRECISION_MAX - XSD_CXX_TREE_DECIMAL_PRECISION - - If the *_PRECISION_MAX macro is defined then the maximum number of - potentially significant decimal digits that the type can represent - is used. Otherwise, if the *_PRECISION macro is defined then its - value is used. By default the precision is set to the number of - decimal digits that the type can represent without change. For - more information on these options, refer to the following paper: - - http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1822.pdf - - The old macro, XSD_FP_ALL_DIGITS, that was equivalent to defining - all three *_PRECISION_MAX macros has been removed. - - An alternative to using these macros is to customize the floating - point type as shown in the custom/double example. - - * An additional constructor is generated in situations where a type - contains one or more required element of complex type (that is, - it itself contains elements or attributes). In this constructor, - initializers for such elements are passed as std::auto_ptr and the - newly created instance is directly initialized with and assumes - ownership of the pointed to objects. This constructor is a logical - addition to the non-copying modifiers that were introduced in the - previous version. - - * Extra conversion operators in the fundamental_base class template - which is used to emulate inheritance from fundamental types are now - disabled by default since they cause problems on several compilers. - To enable them compile your code with the XSD_TREE_EXTRA_FUND_CONV - macro defined. - - C++/Parser - - * New options, --generate-xml-schema and --extern-xml-schema, trigger - generation of the mapping for the XML Schema namespace to a separate - header file and inclusion of that header into other generated header - files instead of generating the necessary declarations inline, - respectively. See the compiler command line manual (man pages) for - details. - - * New example, performance, measures the performance of XML parsing. - This example also shows how to structure your code to achieve the - maximum performance for this operation. - - * Type map files can now include comments. A comment starts with # - and ends with a new line or end of file. To specify a name that - contains # enclose it in "". - - * In type map files the optional argument type now defaults to the - return type if the return type ends with * or & (that is, it is - a pointer or a reference) and 'const return type&' otherwise. - - * The interface for polymorphic parsing has been simplified. Calling the - *_parser() functions multiple times to specify several parsers is no - longer supported. Instead you need to pass the xml_schema::parser_map - object which contains the parsers. For more information refer to - Section 5.4, "Support for Polymorphism" in the C++/Parser Mapping - Getting Started Guide. - - * The use of virtual inheritance has been reduced which results in a - much smaller object code size (more than factor of 2 on some tests) - and faster C++ compilation with less RAM used. - - * The low-level Expat-specific parsing API (parse_begin() and parse_end()) - has been extended to provide XML and XML Schema error translation to - exceptions or error handler calls. See Section 7.2, "Expat Document - Parser" in the C++/Parser Mapping Getting Started Guide for more - information. - -Version 3.1.0 - - * New option, --file-per-type, triggers generation of a separate set - of C++ files for each type defined in XML Schema. This compilation - mode is primarily useful when some of your schemas cannot be compiled - separately or have cyclic dependencies which involve inheritance. - Other new options that are useful in this compilation mode are - --type-file-regex, --type-file-regex-trace, and --file-list. See the - compiler command line manual (man pages) for more information. - - * New option, --options-file, allows additional command line options - to be provided in files, with one option per line. - - * New option, --reserved-name, allows insertion of additional names - with optional replacements to the list of names that should not be - used as identifiers. See the compiler command line manual (man pages) - for details. - - * New options, --location-map, --location-regex, and - --location-regex-trace, allow re-mapping of schema locations - specified in the include and import elements without modifying the - schema files. See the compiler command line manual (man pages) for - more information. - - * New option, --guard-prefix, allows specification of a prefix that - should be added to generated header inclusion guards. - - * New option, --file-list, triggers creation of a file with a list of - generated C++ files. This option is primarily useful in the file-per- - type compilation mode (--file-per-type) to create a list of generated - C++ files, for example, as a makefile fragment. Other new options - that are useful with --file-list are --file-list-prologue, - --file-list-epilogue, and --file-list-delim. See the compiler command - line manual (man pages) for more information. - - * Support for the upcoming Xerces-C++ 3.0.0 release. - - C++/Tree - - * New option, --generate-intellisense, triggers generation of workarounds - for IntelliSense bugs in Visual Studio 2005 (8.0). When this option is - used, the resulting code is slightly more verbose. IntelliSense in - Visual Studio 2008 (9.0) does not require these workarounds. Support - for IntelliSense in Visual Studio 2003 (7.1) is improved with this - option but is still incomplete. - - * New options, --type-naming and --function-naming, allow specification - of the type and function naming conventions that should be used in the - generated code. Supported values for --type-naming are: knr (K&R), ucc - (upper-camel-case), and java. Supported values for --function-naming - are: knr (K&R), lcc (lower-camel-case), and java. For more information - see the NAMING CONVENTION section in the compiler command line manual - (man pages). - - * New options, --type-regex, --accessor-regex, --modifier-regex, - --parser-regex, --serializer-regex, and --enumerator-regex, allow - specification of transformations for type, accessor function, - modifier function, parsing function, serialization function, and - enumerator names in order to produce the generated code using a - custom naming convention. For more information see the NAMING - CONVENTION section in the compiler command line manual (man pages). - - * Generated list classes now provide a complete set of constructors and - conform to the standard C++ sequence interface. - - * String-based types now provide two extra constructors that expect a - C string and std::string as their arguments. This allows direct - initialization of string-based types from string literals. - - * New implementations of the XML Schema date/time types (date, dateTime, - duration, gDay, gMonth, gMonthDay, gYear, gYearMonth, and time) that - represent the information in the numerical form. - - * New binary serialization examples: binary/boost, which shows how to - save/load the object model to/from a custom format using the Boost - serialization library as an example, and binary/xdr, which shows how to - save/load the object model to/from XDR (eXternal Data Representation) - binary format using the XDR API provided as part of Sun RPC. - - * The non-copying modifier functions can now be used to assemble object - models from scratch. For more information see Section 4.4, "Creating - the Object Model from Scratch" in the C++/Tree Mapping Getting Started - Guide as well as Section 2.8, "Mapping for Local Elements and Attributes" - in the C++/Tree Mapping User Manual. - - * Doxygen documentation was added to the XSD runtime for the built-in XML - Schema types, exceptions, etc. This allows linking of the generated - documentation to the XSD runtime documentation using the Doxygen tags - mechanism. The Doxygen configuration file for the XSD runtime is - provided in the documentation/cxx/tree/reference/ directory. - - * Support for customization of anyType. Because anyType is a base type - for every generated type, customizing it allows one to implement custom - functionality that spans the entire type system. See the comments - example in the examples/cxx/tree/custom/ directory. - - * New option, --omit-default-attributes, triggers generation of extra - checks that exclude attributes with default and fixed values from the - serialized XML documents. - - * The parsing functions that used to read from DOMInputSource were changed - to use InputSource to ease support of Xerces-C++ 3 and 2 series in the - same code base. - - * The parsing function that used to parse DOMDocument* was changed to - parse xml_schema::dom::auto_ptr& instead. If the keep_dom - and own_dom flags are specified then this parsing function resets the - passed automatic pointer and the returned object model assumes - ownership of the DOM document. xml_schema::dom::auto_ptr is a simple - automatic pointer for Xerces-C++ DOM with the same interface as - std::auto_ptr. - - * The xml_schema::tree_node_key DOM user data key was moved to - xml_schema::dom::tree_node_key. - - C++/Parser - - * New option, --generate-polymorphic, triggers generation of polymorphism- - aware code. This option should be used on XML vocabularies which use - xsi:type and/or substitution groups. For more information see Section - 5.4, "Support for Polymorphism" in the C++/Parser Mapping Getting - Started Guide we well as the polymorphism and polyroot examples in the - examples/cxx/parser/ directory. - - * The date/time types (date, dateTime, gDay, gMonth, gMonthDay, gYear, - gYearMonth, and time) now represent time zone in the numerical form. - - * In order to support parsing of polymorphic XML documents, the signatures - of the start_* functions (_start_element, _start_any_element, and - start_root_element) have changed to include a third argument of type - const ro_string*. This argument contains the resolved type name and - namespace in case the xsi:type attribute was specified. - -Version 3.0.0 - - * Anonymous type morphing (automatic type naming) is now performed by - default in both mappings. The --morph-anonymous option does not have - any effect but is preserved for backwards compatibility. A new option, - --preserve-anonymous, disables anonymous type morphing. This option is - useful together with --show-anonymous if you want to make sure your - schemas do not have any anonymous types. - - * A number of bugs fixed in both C++/Tree and C++/Parser mappings. - - C++/Tree - - * The new C++/Tree Mapping Getting Started Guide is available in the - documentation/cxx/tree/guide/ directory. - - * The type definitions for local elements and attributes in the form - name::type have been changed to name_type. For example, an element - bar in type foo with maxOccurs="unbounded" used to have its iterator - type defined as foo::bar::iterator. With this change it becomes - foo::bar_iterator. Furthermore, the container type name for sequence - elements has changed from foo::bar::container to foo::bar_sequence - and for optional elements and attributes from foo::bar::container - to foo::bar_optional. This is a backwards incompatible change and - may require application code adjustments (the C++ compiler will - pinpoint the affected places). - - * New option, --generate-doxygen, triggers generation of documentation - comments suitable for extraction by the Doxygen documentation system. - Documentation from annotations is added to the comments if present in - the schema. - - * New option, --generate-wildcard, triggers generation of the new - wildcard (any and anyAttribute) mapping. This mapping represents the - content matched by wildcards as DOM fragments. For more information on - the new mapping see Section 2.12, "Mapping for any and anyAttribute" - in the C++/Tree Mapping User Manual as well as the wildcard example in - the examples/cxx/tree/ directory. - - * New option, --generate-comparison, triggers generation of comparison - operators (== and !=) for complex types. Comparison is performed - memberwise. - - * Support for the RPC XDR binary stream in addition to ACE CDR. - - * New constructor is generated for complex types with ultimate bases - that are simple types and can be default-initialized. This constructor - includes initializers for all required members but omits the initializer - for the base type. See Section 2.7, "Mapping for Complex Types" in the - C++/Tree Mapping User Manual for more information. - - * Support for polymorphic binary serialization and extraction. Note that - the semantics of the --generate-insertion and --generate-extraction - options has changed. See the the compiler command line manual (man - pages) for details. - - * New parsing function with the DOMDocument* argument and the own_dom - flag allow the tree to assume the ownership of the DOM document - being parsed when DOM association is requested (keep_dom flag). - See the C++/Tree Mapping User Manual for more information. - - * New example, multiroot, shows how to handle XML vocabularies with - multiple root elements. - - * New example, caching, shows how to parse several XML documents while - reusing the underlying XML parser and caching the schemas used for - validation. - - * The mapping of built-in XML Schema type decimal has changed from - long double to double. The old mapping can be obtained by providing - a custom mapping for this type. - - * The xml_schema::errors type which is used in the xml_schema::parsing - and xml_schema::serialization exceptions has been renamed to - xml_schema::diagnostics and extended to include warnings in addition - to errors. - - * Serialization operators now clear the element being serialized to from - existing child nodes and attributes (except for special attributes such - as prefix-namespace mappings, etc.). - - * Improved built-in type parsing, including support for normalization and - whitespace collapsing. - - * Optimizations for the generated code size and compilation time, - including space optimizations for polymorphic parsing and - serialization. Optimizations for XML parsing speed. - - C++/Parser - - * The C++/Parser mapping have been significantly redesigned. See the new - Getting Started Guide in documentation/cxx/parser/guide/ for details. - - * The new C++/Parser Mapping Getting Started Guide is available in the - documentation/cxx/parser/guide/ directory. - - * The mapping now provides parser implementations for all built-in XML - Schema types. See Chapter 6, "Built-In XML Schema Type Parsers" in - the C++/Parser Mapping Getting Started Guide for more information. - - * The mapping now supports automatic generation of sample parser - implementations and a test driver. The --generate-noop-impl option - triggers generation of a sample implementation with empty function - bodies. The --generate-print-impl option triggers generation of a - sample implementation that prints the data stored in XML to STDOUT. - The --generate-test-driver option trigger generation of a test driver. - For more information on this feature see the compiler command line - manual (man pages) and the generated example in the examples/cxx/parser/ - directory. Other relevant options include: --force-overwrite, - --root-element-first, --root-element-last, and --root-element. - - * New example, wildcard, shows how to parse the XML data matched by - XML Schema wildcards (any and anyAttribute). - - * The xml_schema::document parser has been extended with overridable - virtual functions start_root_element and end_root_element to support - parsing of XML vocabularies with multiple document roots. See the - multiroot example in the examples/cxx/parser/ directory for more - information. - - * The xml_schema::errors type which is used in the xml_schema::parsing - exception has been renamed to xml_schema::diagnostics and extended to - include warnings in addition to errors. - -Version 2.3.1 - - * The compiler is now capable of translating multiple schemas with - one invocation. - - * New option, --sloc-limit, allows one to limit the amount of the - generated code. - - * New option, --proprietary-license, instructs the compiler not to - include the GPL banner in each generated file. Instead a short - notice about a required proprietary license is generated. You - should not use this option unless you have obtained a proprietary - license from Code Synthesis. - - * The default encoding for the 'char' character type is now UTF-8. - To get the previous behavior (local code page via the Xerces-C++ - transcode functions) define the XSD_USE_LCP preprocessor macro - when compiling your source code. - - C++/Tree - - * The --parts option has been improved to split generated code more - evenly by analyzing the complexity of the generated schema constructs. - - * Ability to customize serialization, std::ostream, and binary - insertion/extraction operators. See examples/cxx/tree/custom/wildcard - for an example on how to handle XML Schema wildcards (xsd:any and - xsd:anyAttribute) by customizing the parsing constructor and - serialization operators. - - * Optimizations for the run-time memory consumption. - - * Optimizations for space in the generated code. - - * Number of bug fixes. - - C++/Parser - - * Proper handling of an xsd:any nested content. Nested elements, - attributes, and text are reported via _any_* hooks of the current - parser. - - * Number of bug fixes, mostly in the generated validation code. - - -Version 2.3.0 - - * Name conflicts across type inheritance hierarchies are now detected - and resolved via name escaping. - - C++/Tree - - * New option, --suppress-parsing, suppresses generation of the parsing - constructors and functions. This can be used to minimize the generated - code footprint when parsing from XML is not used. - - * New option, --generate-forward, triggers generation of a forward - declaration header file for types defined in the schema. A set of - --fwd-* options that control the resulting file name as well as - prologue and epilogue code are available. - - * New option, --generate-xml-schema, triggers generation of the mapping - for the XML Schema namespace to a separate header file. See the man - pages for details and examples/cxx/tree/custom/calendar for an example. - - * New option, --extern-xml-schema, triggers inclusion of a header - file for the XML Schema namespace instead of generating the - necessary declarations inline. See the man pages for details and - examples/cxx/tree/custom/calendar for an example. - - * New options, --custom-type and --custom-type-regex, instruct the - compiler to use custom C++ type for a type defined in the schema. - The standard mapping can still be generated (with a different name) - usually to be used as a base. Built-in XML Schema types can be - customized using this mechanism. See the man pages for details and - examples/cxx/tree/custom/* for examples. - - * The generated parsing constructors and serialization operators have - been changed to use the Xerces-C++ DOM elements and attributes - instead of the internal wrapper types. This should provide easier - integration with other code and libraries that use the Xerces-C++ - DOM types such as Berkeley DB XML. - - * New example, examples/cxx/tree/dbxml, shows how to use the C++/Tree - mapping on top of the Berkeley DB XML database. - - C++/Parser - - * Validation of the attribute structure in the generated code. - - * Validation of the character content models including mixed content in - the generated code. - - * Validation of the built-in XML Schema types. - - * Optimizations for space and time in the generated code. In particular - data coping during parsing and validation was significantly reduced. - - -Version 2.2.0 - - * Detection of a version mismatch between the generated code and - the runtime. - - C++/Tree - - * Escaping of a global element name that conflicts with a global type - name. This is a backwards-incompatible change. Previous versions - map them to the same name. - - * New options, --generate--insertion and --generate-extraction, - trigger generation of (binary) data representation stream - insertion and extraction operators, respectively. This allows - one to serialize/deserialize in-memory representation to/from - data representation streams such as XSD, CDR, etc. ACE CDR - streams are supported out of the box (see the binary example). - User-supplied streams can be used via an adaptation layer. - - * New serialization flag, no_xml_declaration, instructs the XML - serialization functions to omit an XML declaration. This is useful - for streaming serialization (see the streaming example). - - * Optimizations to reduce generated code size. - - - C++/Parser - - * New options, --generate-validation and --suppress-validation, - trigger and suppress generation of the validation code, - respectively. The validation code is the implementation of the - XML Schema validation in the generated code (also known as - "perfect" parser). In this version validation of the element - structure has been implemented. - - * New architecture for underlying XML parsers. This is a backwards- - incompatible change. Existing applications will have to be - modified. See examples for details. - - -Version 2.1.1 - - C++/Tree - - * New option, --namespace-map, allows direct mapping of XML Schema - namespaces to C++ namespaces without the use of regular expressions. - - * Further optimizations in the container code and enum mapping to - reduce generated code size. - - * Number of bug fixes in the generated code. - - - C++/Parser - - * New option, --namespace-map, allows direct mapping of XML Schema - namespaces to C++ namespaces without the use of regular expressions. - - -Version 2.1.0 - - * Automatic handling of forward inheritance. XML Schema allows - inheritance from yet undefined types while it is illegal to do - so in C++. Now the translator automatically handles forward - inheritance by re-arranging the schema during compilation. - - - C++/Tree - - * New enum mapping with support for inheritance. Enumerators are - now parsed using binary search instead of linear search. - - * Associated DOM nodes now retain "back" pointers to tree nodes. - - * Optimizations to reduce generated code size. - - - C++/Parser - - * Specialization for void. You can now use void as a hook argument - type if you don't want to pass any data between parsers. - - * Support for re-use of implementations of base parsers in derived - parsers using the mixin C++ idiom. See the examples/cxx/parser/mixin - for more information. - - * Support for uninitialized parser. If you don't provide a parser - for element/attribute, that element/attribute will be ignored - during parsing. - - -Version 2.0.0 - - * New cardinality calculator. This improves support for schemas that - use complex structures with repeated elements, e.g., - - - - - - - - - - - - - - - - * New identifier escaping code. With this feature xsd generates proper - code for schemas that use the same name for an element and an attribute - in the same type or use several elements/attributes with different - qualified names but with the same local name, e.g., - - - - - - - - - - - - - - - - - - - - - - - - - - C++/Tree - - * New option, --generate-polymorphic, triggers generation of - polymorphism-aware code. Before this release xsd used to always - generate polymorphism-aware code. However, it appears to be quite - wasteful in terms of the generated code size (up to 40%). You will - now need to explicitly specify this option if you use substitution - groups or xsi:type. A warning is issued if this option is not - specified but the schema makes use of substitution groups. - - * New options, --root-element-first, --root-element-last, - --root-element-all, --root-element-none, and --root-element, control - generation of parsing and serialization functions. With these options - you can avoid generating extra code for global elements that are not - document roots. See the man pages for details. - - * New options, --parts and -parts-suffix, allows you to split generated - source code into a number of parts. This is useful when translating - large, monolithic schemas and a C++ compiler is not able to compile - the resulting source code at once (usually due to insufficient memory). - - * New option, --generate-default-ctor, triggers generation of default - constructors even for types that have required members. Required - members of an instance constructed using such a constructor are not - initialized and accessing them results in undefined behavior. Thanks - to Jean-Francois Dube for suggesting this - feature. - - * New option, --generate-from-base-ctor, triggers generation of - constructors that expect an instance of a base type followed by all - required members. Thanks to Jean-Francois Dube - for suggesting this feature. - - * Information scopes for attributes and elements with default/fixed values - now define the public static default_value function which allows one to - obtain the default/fixed value for the element/attribute. Thanks to - Dave Moss for suggesting this feature. - - * MSVC 7.1 has a limit on the length of the "if else if" chain. This - results in ICE when compiling generated code for enumerations with - a large number of values. This version addresses this issue. Thanks - to Cyrille Chépélov for reporting this and - suggesting a fix. - - - C++/Parser - - * The parser construction API has changed. Now, for element 'foo', - the name of the parser modifier function is 'foo_parser'. Likewise, - operator() for setting all parsers at once has been changed to the - 'parsers' function. - - -Version 1.9.0 - - C++/Tree - - * The size modifier function in the base64_binary and hex_binary - built-in types automatically adjusts capacity if needed. - - * More internal names (names that start with _xsd_) were made - private or protected. - - C++/Parser - - * Typedef for the parser base in the xml_schema namespace. - - C++/Parser-E - - * C++/Parser mapping optimized for embedded systems. For now it - is equivalent to 'cxx-parser --xml-parser expat'. - - -Version 1.8.0 - - * Moved to the build 0.2 series. - - C++/Tree - - * Support for default and fixed values in attributes. An optional - attribute with a default or fixed value is mapped to the One - cardinality class instead of the Optional cardinality class. - - * Mapping for base64Binary and hexBinary has improved. Now these - types support a basic buffer abstraction and perform automatic - encoding and decoding. - - * Internal names are protected. We've noticed (via bug reports) a - wide use of internal names (names that start with _xsd_) in user - code. This is not portable and instead you should use public - names. To prevent this from happening in the future we've made - all internal names protected. - - C++/Parser - - * Support for Expat as the underlying XML parser in addition to - Xerces-C++. This allows one to use the C++/Parser mapping in - memory-constrained environments such as embedded systems. To - select Expat instead of Xerces-C++ (default) add - '--xml-parser expat' to the command line. At the moment only - 'char' (UTF-8) is supported as the base character type when - Expat is selected. - - * The invalid_instance exception has been renamed to parsing. - - * Generic error_handler interface has been added in addition - to Xerces-C++-specific DOMErrorHandler. It allows you to - handle parsing errors and warnings without having to deal - with Xerces-C++ specifics. - - * The default error handling behavior has changed in parsing - functions. Instead of printing errors and warnings to STDERR, - the errors are now collected and thrown as part of the parsing - exception. - - * In parsing functions, the name, namespace arguments order has - been reversed to be consistent with the one used in parsing - hooks. - -Version 1.7.0 - - * Number of bug fixes in libxsd and the generated code. - - C++/Tree - - * Comprehensive XML Schema C++/Tree Mapping User Manual. - - * Basic support for union. A simple type that is defined using - derivation by union is mapped to a C++ class that derives from - string. - - * The _clone function has its arguments default-initialized. - - * The invalid_instance exception has been renamed to parsing. - - * Generic error_handler interface has been added in addition - to Xerces-C++-specific DOMErrorHandler. It allows you to - handle parsing/serialization errors and warnings without - having to deal with Xerces-C++ specifics. See the user - manual for more information. - - * The default error handling behavior has changed in parsing - and serialization functions. Instead of printing errors and - warnings to STDERR, the errors are now collected and thrown - as part of the parsing/serialization exception. See the user - manual for more information. - - * The optional and sequence containers now support operators ==, - !=, <, >, <=, and >=. - - * Flags argument has been added to serialization functions. The - only flag that is currently supported is dont_initialize. - - * Generated code cleanups. - - C++/Parser - - * Basic support for union. A simple type that is defined using - derivation by union is mapped to a C++ class template that - is just an alias for the generic parser. You are expected to - override the _characters function in your implementation. - - * Properties argument to parsing functions which allows to - programmatically specify schemas for instance document - validation. - - * Flags argument to parsing functions. The following flags - are supported: - - dont_validate - do not validate instance documents - dont_initialize - do not initialize the Xerces-C++ runtime - -Version 1.6.0 - - * Number of bug fixes in libxsd and the generated code. - - C++/Tree - - * Support for xsi:type and substitution groups in parsing and - serialization. See examples/cxx/tree/polymorphism for a code - sample. - - * Properties argument to parsing functions which allows to - programmatically specify schemas for instance document - validation. - - * Extra checks in parsing code which prevents construction - of inconsistent in-memory representation from invalid - instance documents. Should be useful when validation is - disabled. - - * Accessors and modifier were made normal member functions. - Before they were implemented via functors. - - * Workaround for g++-3.3 bug# 16650: - - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16650 - - C++/Parser - - * All "service" functions were renamed to start with '_'. - This should prevent hiding of service functions by - elements/attributes with the same names. - -Version 1.5.0 - - * Number of bug fixes in libxsd and the generated code. - - C++/Tree - - * Basic support for inheritance-by-restriction in complex types. - - * The following parsing flags have been introduced: - - keep_dom - keep association with underlying DOM nodes - dont_validate - do not validate instance documents - dont_initialize - do not initialize the Xerces-C++ runtime - - * "Type-less content" such as mixed content models, xsd:anyType/ - xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported by - exposing corresponding DOM nodes (see the keep_dom parsing flag). - Note that only a subset of XML Schema xsd:any functionality is - supported. The compiler will issue diagnostics for unsupported - cases. See examples/cxx/tree/mixed for a code sample. - - C++/Parser - - * Support for inheritance-by-restriction in complex types. - - * "Type-less content" such as mixed content models, xsd:anyType/ - xsd:anySimpleType, and xsd:any/xsd:anyAttribute is supported - by forwarding parsing events to a set of "unexpected" hooks. - Note that only a subset of XML Schema xsd:any functionality is - supported. The compiler will issue diagnostics for unsupported - cases. See examples/cxx/parser/mixed for a code sample. - -Version 1.4.0 - - * Number of improvements and bug fixes in the diagnostics code. - - * libxsd has been reorganized to provide a clean split of code with - regards to char/wchar_t use. It should be possible to use libxsd - and the xsd-generated code on platforms that lack wchar_t support, - such as mingw. - - C++/Tree - - * Work around for g++ bug# 23206. - - * Support for xsd:list. - - * Type/member name conflicts are auto-resolved. Such conflicts - occur when a type and an element or attribute withing this type - share the same name. - - * XML Schema extension, the 'refType' attribute, allows one to - specify referenced type for xsd:IDREF and xsd:IDREFS data types. - See examples/cxx/tree/library for details. - - * New option, --morph-anonymous, allows automatic morphing - of anonymous types to named ones. See the man pages for - details. - - * New option, --namespace-regex-trace, allows one to trace the - namespace mapping process. See the man pages for details. - - * Mapping for optional elements/attributes (cardinality 0..1) - has changed in a backwards-incompatible way. In the previous - version you would write: - - Bar& bar = ... - - if (bar.foo.present ()) // test - { - Foo& foo (bar.foo ()); // get - - bar.foo (Foo (...)); // set - - bar.foo.reset (); // reset - } - - Now you would write it like this: - - if (bar.foo ().present ()) // test - { - Foo& foo (bar.foo ().get ()); // get - - bar.foo (Foo (...)); // set - - bar.foo ().reset (); // reset - } - - Or using the pointer notation: - - if (bar.foo ()) // test - { - Foo& foo (*bar.foo ()); // get - - bar.foo (Foo (...)); // set - - bar.foo ().reset (); // reset - } - - C++/Parser - - * Support for xsd:list. - - * Type/member name conflicts are auto-resolved. Such conflicts - occur when a type and an element or attribute withing this type - share the same name. - - * New option, --namespace-regex-trace, allows one to trace the - namespace mapping process. See the man pages for details. - -Version 1.3.0 - - * Numerous bug fixes. - - * The XML subsystem of libxsd has been reorganized to provide - a clean split of DOM and SAX functionalities. - - C++/Parser - - * New option, --morph-anonymous, allows automatic morphing - of anonymous types to named ones. See the man pages for - details. - - C++/Tree - - * Additional parser functions provide support for reading - from std::istream. - -Version 1.2.0 - - C++/Parser - - * New backend that generates the C++/Parser mapping. - -Version 1.1.1 - - all backends - - * Bug fixes in the filesystem path handling logic. - -Version 1.1.0 - - C++/Tree - - * New option, --generate-serialization, triggers generation of - serialization functions. Serialization functions convert an in-memory - representation back to XML. - - * xsd::cxx::tree::vector has been extended to closely follow std::vector - API. This allows you to access and modify element sequences as if they - were of type std::vector. - - * Generated constructors from xml::attribute and xml::element are made - explicit. - - * The library example was extended to showcase modification and - serialization of the in-memory representation. - - * New "XML Schema C++/Tree Mapping Serialization Guide" has an in-depth - treatment of the serialization mechanisms provided by xsd. - -Version 1.0.1 - - all backends - - * Improved diagnostics. - - * Bug fixes in the schema inclusion/importing logic. - - C++/Tree - - * Two new options: --include-with-brackets and --include-prefix - -Version 1.0.0 - - * First public release. diff --git a/xsd/NEWS b/xsd/NEWS new file mode 120000 index 0000000..0fae0f8 --- /dev/null +++ b/xsd/NEWS @@ -0,0 +1 @@ +../NEWS \ No newline at end of file -- cgit v1.1