This example shows how to save/load the C++/Hybrid object model to/from
a custom format using the raw binary representation as an example. Note
that if you would like to use this format in your applications, make sure
that all the targets use exactly the same base type sizes (e.g., int, long,
float, double, size_t, etc.) and byte order.

The example consists of the following files:

library.xsd
  XML Schema which describes a library of books.

library.xml
  Sample XML instance document.

xml-schema.hxx
xml-schema-pskel.hxx
xml-schema-sskel.hxx
  Base object model types (the first file), parser skeletons (the second
  file), and serializer skeletons (the third file) for the XML Schema
  built-in types. These header files are generated by the XSD/e compiler
  using the --generate-xml-schema option. The --generate-parser and 
  --generate-serializer options were also specified.

irawstream.hxx
irawstream.ixx
irawstream.txx
irawstream.cxx

orawstream.hxx
orawstream.ixx
orawstream.txx
orawstream.cxx
  Implementation of the raw binary representation streams. The header 
  files include xml-schema.hxx to gain access to the base object model
  types. You can use this implementation as a base for your custom
  format.

library.hxx
library.cxx

library-pskel.hxx
library-pskel.cxx
library-pimpl.hxx
library-pimpl.cxx

library-pskel.hxx
library-pskel.cxx
library-pimpl.hxx
library-pimpl.cxx
  Object model (the first pair of files), parser skeletons (the second
  pair), parser implementations (the third pair), serializer skeletons
  (the fourth pair), and serializer implementations (the fifth pair).
  These files are generated by the XSD/e compiler from library.xsd. The
  --generate-parser, --generate-serializer, and --generate-aggregate
  options were used to request the generation of the parsing and
  serialization code. The --generate-insertion and --generate-extraction
  options were used to generate the insertion and extraction operations
  for the orawstream and irawstream, respectively. The --hxx-prologue
  option was used to include the orawstream.hxx and irawstream.hxx
  header files at the beginning of library.hxx. Finally, the 
  --extern-xml-schema option was used to include xml-schema* files
  instead of generating the same code directly.

driver.cxx
  Driver for the example. It first calls the parser that constructs
  the object model from the input XML file. It then saves the object
  model to the raw binary representation and loads it back. Finally,
  the driver calls the serializer to serialize the loaded object model
  back to XML.

To run the example on the sample XML instance document simply execute:

$ ./driver library.xml

The example reads from STDIN if input file is not specified:

$ ./driver <library.xml
