From 707cc94fe52463870a9c6c8e2e66eaaa389e601d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 24 Feb 2009 15:16:26 +0200 Subject: Start tracking XSD/e with git after version 3.0.0 --- examples/cxx/parser/multiroot/README | 61 ++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 examples/cxx/parser/multiroot/README (limited to 'examples/cxx/parser/multiroot/README') diff --git a/examples/cxx/parser/multiroot/README b/examples/cxx/parser/multiroot/README new file mode 100644 index 0000000..817e522 --- /dev/null +++ b/examples/cxx/parser/multiroot/README @@ -0,0 +1,61 @@ +This example shows how to handle XML vocabularies with multiple +root elements using the Embedded C++/Parser 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 + C++ types that describe the protocol requests. These are + hand-written. + +protocol.map + Type map. It maps XML Schema types defined in protocol.xsd + to the C++ types defined in protocol.hxx. + +protocol-pskel.hxx +protocol-pskel.cxx + Parser skeletons generated by XSD/e from protocol.xsd and + protocol.map. + +protocol-pimpl-mixin.hxx +protocol-pimpl-mixin.cxx + +protocol-pimpl-tiein.hxx +protocol-pimpl-tiein.cxx + Parser implementations (using either mixin or tiein parser + reuse style) that construct the custom object model from an + XML instance using the types from protocol.hxx. These are + hand-written implementations of the parser skeletons defined + in protocol-pskel.hxx. + +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 constructs + a parser instance from all the individual parsers found in one + of protocol-pimpl-*.hxx. In then invokes this parser instance + to parse the input file and produce the in-memory object model. + Finally, it prints the contents 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