This example shows how to customize the anyType XML Schema built-in type to implement preservation of comments stored in XML documents. Because anyType is a base type for every generated type, you can use this technique to implement custom functionality that spans the entire type system. For more information on the C++/Tree mapping customization see the C++/Tree Mapping Customization Guide[2]. [2] http://wiki.codesynthesis.com/Tree/Customization_guide The example consists of the following files: people.xsd XML Schema definition for a simple person record vocabulary. people.xml Sample XML instance document. xml-schema.hxx C++ types for XML Schema built-in types. This header file is generated by by the XSD compiler in the --generate-xml-schema mode using the following command line: xsd cxx-tree --generate-xml-schema \ --generate-serialization \ --custom-type anyType=/type_base \ --hxx-epilogue '#include "xml-schema-custom.hxx"' xml-schema.xsd The --custom-type option is used to customize the xsd:anyType type. people.hxx people.ixx people.cxx C++ types that represent the person record vocabulary, a set of parsing functions that convert XML instance documents to a tree-like in-memory object model, and a set of serialization functions that convert the object model back to XML. These files are generated by the XSD compiler from people.xsd using the following command line: xsd cxx-tree --generate-serialization --extern-xml-schema xml-schema.xsd \ people.xsd The --extern-xml-schema option in used to include xml-schema.hxx. xml-schema-custom.hxx Header file which defines our own xml_schema::type class. It is included at the end of xml-schema.hxx using the --hxx-epilogue option. xml-schema-custom.cxx Source file which contains the implementation of our xml_schema:type class. dom-parse.hxx dom-parse.cxx Definition and implementation of the parse() function that parses an XML document to a DOM document while preserving XML comments. driver.cxx Driver for the example. It first calls the above parse() function to parse the input file to a DOM document. It then parses the DOM document to the object model and performs a number of modifications on this object model. Finally, it serializes the modified object model back to XML, including XML comments. To compile and link the example manually from the command line we can use the following commands (replace 'c++' with your C++ compiler name): c++ -DXSD_CXX11 -c people.cxx c++ -DXSD_CXX11 -c xml-schema-custom.cxx c++ -DXSD_CXX11 -c dom-parse.cxx c++ -DXSD_CXX11 -c driver.cxx c++ -o driver driver.o people.o xml-schema-custom.o dom-parse.o -lxerces-c Note that we need to define the XSD_CXX11 preprocessor macro since the source code includes libxsd headers directly. To run the example on the sample XML instance document execute: ./driver people.xml