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