diff options
Diffstat (limited to 'xsd-examples/cxx/parser/mixed/README')
-rw-r--r-- | xsd-examples/cxx/parser/mixed/README | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/xsd-examples/cxx/parser/mixed/README b/xsd-examples/cxx/parser/mixed/README new file mode 100644 index 0000000..a00a86d --- /dev/null +++ b/xsd-examples/cxx/parser/mixed/README @@ -0,0 +1,65 @@ +This example shows how to handle raw, "type-less content" such as +mixed content models, anyType/anySimpleType, and any/anyAttribute +in the C++/Parser mapping. + +In this example we use mixed content model to describe text +with embedded links, e.g., + + This paragraph talks about <a href="uri">time</a>. + +The example transforms such text into plain text with +references, e.g., + + This paragraph talks about time[0]. + + [0] uri + +The example consists of the following files: + +text.xsd + XML Schema which describes "text with links" instance + documents. + +text.xml + Sample XML instance document. + +anchor.hxx + Anchor type that captures the information about a link. + +text.map + Type map. It maps XML Schema anchor types defined in + text.xsd to C++ anchor class defined in anchor.hxx. + +text-pskel.hxx +text-pskel.cxx + Parser skeletons generated by the XSD compiler from text.xsd and + text.map using the following command line: + + xsd cxx-parser --type-map=text.map text.xsd + + Or if using Expat instead of Xerces-C++ as the underlying XML parser: + + xsd cxx-parser --xml-parser=expat --type-map=text.map text.xsd + +driver.cxx + A parser implementation and a driver for the example. The + parser implementation prints the transformed text to STDOUT. + The driver first constructs a parser instance from the parser + implementation mentioned above and a couple of predefined + parsers for the XML Schema built-in types. In then invokes + this parser instance to parse the input file. + +To compile and link the example manually from the command line we can use +the following commands (replace 'c++' with your C++ compiler name): + +c++ -c text-pskel.cxx +c++ -c driver.cxx +c++ -o driver driver.o text-pskel.o -lxerces-c + +Or if using Expat as the underlying XML parser: + +c++ -o driver driver.o text-pskel.o -lexpat + +To run the example on the sample XML instance document: + +./driver text.xml |