This example shows how to parse XML vocabularies with multiple root
elements using the Embedded C++/Hybrid mapping.

The example consists of the following files:

protocol.xsd
  XML Schema which defines a simple bank account protocol with
  requests such as withdraw and deposit.

balance.xml
withdraw.xml
deposit.xml
  Sample XML instances for the protocol requests.

protocol.hxx
protocol.cxx

protocol-pskel.hxx
protocol-pskel.cxx
protocol-pimpl.hxx
protocol-pimpl.cxx
  Object model (the first pair of files), parser skeletons (the
  second pair) and parser implementations (the third pair). These
  files are generated by the XSD/e compiler from protocol.xsd. The
  --generate-parser and --generate-aggregate options were used to
  request the generation of the parsing code.

driver.cxx
  Driver for the example. It implements a custom document parser
  that determines which request is being parsed and uses the
  corresponding parser implementation. The document parser
  intentionally does not support the deposit request to show how
  to handle unknown documents. The driver first calls the parser
  that constructs the object model from the input XML file. It
  then prints the content of the object model to STDERR.

To run the example on the sample XML request documents simply
execute:

$ ./driver balance.xml
$ ./driver withdraw.xml
$ ./driver deposit.xml

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

$ ./driver <balance.xml
$ ./driver <withdraw.xml
$ ./driver <deposit.xml
