diff options
Diffstat (limited to 'examples/cxx/parser/polyroot/README')
-rw-r--r-- | examples/cxx/parser/polyroot/README | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/cxx/parser/polyroot/README b/examples/cxx/parser/polyroot/README new file mode 100644 index 0000000..4b01b56 --- /dev/null +++ b/examples/cxx/parser/polyroot/README @@ -0,0 +1,47 @@ +This example shows how to handle the xsi:type attributes and substitution +groups when they are used on root elements. For general coverage of XML +Schema polymorphism handling in the Embedded C++/Parser mapping see the +polymorphism example. + +The example consists of the following files: + +supermen.xsd + XML Schema which describes supermen instance documents. + +person.xml +superman.xml +batman.xml + Sample XML instance documents. + +supermen-pskel.hxx +supermen-pskel.cxx + Parser skeletons generated by the XSD/e compiler from supermen.xsd. + Note the use of the --generate-polymorphic command line option. + +supermen-pimpl-mixin.hxx +supermen-pimpl-mixin.cxx + +supermen-pimpl-tiein.hxx +supermen-pimpl-tiein.cxx + Parser implementations (using either mixin or tiein parser reuse + style) that print the XML data to STDOUT. + +driver.cxx + Driver for the example. It implements a custom document parser + that determines which XML Schema type is being parsed and uses + the corresponding parser implementation. The driver first + constructs a parser instance from all the individual parsers + found in one of supermen-pimpl-*.hxx. In then invokes this parser + instance to parse the input file. + +To run the example on the sample XML instance documents simply execute: + +$ ./driver person.xml +$ ./driver superman.xml +$ ./driver batman.xml + +The example reads from STDIN if input file is not specified: + +$ ./driver <person.xml +$ ./driver <superman.xml +$ ./driver <batman.xml |