This example shows how to use XML Schema polymorphism features such as
xsi:type attributes and substitution groups in the C++/Tree mapping.

The example consists of the following files:

supermen.xsd
  XML Schema which describes the "supermen" instance documents.

supermen.xml
  Sample XML instance document.

supermen.hxx
supermen.cxx
  C++ types that represent the given 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 are generated by XSD from supermen.xsd.
  Note also that we use the --generate-polymorphic command line option
  and that we don't need to use --polymorphic-type to explicitly mark 
  types as polymorphic because this is automatically deduced by the
  XSD compiler from the substitution groups used in the supermen.xsd
  schema.

driver.cxx
  Driver for the example. It first calls one of the parsing functions
  that constructs the object model from the input file. It then prints
  the content of the object model to STDERR. Finally, the driver serializes
  the object model back to XML.

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

$ ./driver instance.xml
