path: root/examples/cxx/parser/multiroot/README
diff options
authorBoris Kolpackov <>2009-09-17 07:15:29 +0200
committerBoris Kolpackov <>2009-09-17 07:15:29 +0200
commitf0510d2f90467de8e8f260b47d79a9baaf9bef17 (patch)
tree0b9929946f06a9cbe9b9e8f2a7600dae4e048f79 /examples/cxx/parser/multiroot/README
Start tracking XSD with git
Diffstat (limited to 'examples/cxx/parser/multiroot/README')
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/cxx/parser/multiroot/README b/examples/cxx/parser/multiroot/README
new file mode 100644
index 0000000..041dfec
--- /dev/null
+++ b/examples/cxx/parser/multiroot/README
@@ -0,0 +1,51 @@
+This example shows how to handle XML vocabularies with multiple
+root elements using the C++/Parser mapping.
+The example consists of the following files:
+ XML Schema which defines a simple bank account protocol with
+ requests such as withdraw and deposit.
+ Sample XML instances for the protocol requests.
+ C++ types that describe the protocol requests. These are
+ hand-written.
+ Type map. It maps XML Schema types defined in protocol.xsd
+ to the C++ types defined in protocol.hxx.
+ Parser skeletons generated by XSD from protocol.xsd and
+ Parser implementations 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 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
+ 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
+$ ./driver balance.xml
+$ ./driver withdraw.xml
+$ ./driver deposit.xml