This example shows how to compress an XML document during serialization and decompress it during parsing. The example uses the compression functionality provided by the zlib library[1] which needs to be installed in order to build and run this example. It should also be fairly straight- forward to modify the code in this example to use other compression libraries. [1] http://www.zlib.net The example consists of the following files: library.xsd XML Schema which describes a library of books. library.xml.gz Sample XML instance document compressed using the gzip format. compressed-format-target.hxx compressed-format-target.cxx Implementation of the Xerces-C++ XMLFormatTarget interface with the on- the-fly compression support. You can use it in your application to add XML compression. compressed-input-source.hxx compressed-input-source.cxx Implementation of the Xerces-C++ InputSource interface with the on-the- fly decompression support. You can use it in your application to add XML decompression. library.hxx library.cxx C++ types that represent the given vocabulary and a set of parsing functions that convert XML instance documents to a tree-like in-memory object model. These are generated by XSD from library.xsd. driver.cxx Driver for the example. It first creates the compressed_input_source object and passes it to one of the parsing functions that constructs the object model from the compressed input file. It then prints the content of the object model to STDERR. Finally, the driver creates the compressed_format_target object and passes it to one of the serialization functions which converts the object model back to the compressed XML. To run the example on the sample XML document simply execute: $ ./driver library.xml.gz The serialization output is written to the out.xml.gz file.