summaryrefslogtreecommitdiff
path: root/xsd-examples/cxx/parser/mixin/README
blob: 20e5d53800fabab2031cad65110cece8b6570e2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
This example shows how to reuse implementations of base parsers
in derived parsers using the mixin C++ idiom.

The example consists of the following files:

schema.xsd
  XML Schema which defined two data types: base and
  derived.

instance.xml
  Sample XML instance document.

types.hxx
  C++ classes that correspond to the base and derived
  types in schema.xsd.

schema.map
  Type map. It maps XML Schema types defined in schema.xsd
  to C++ types defined in types.hxx.

schema-pskel.hxx
schema-pskel.cxx
  Parser skeletons generated by the XSD compiler from schema.xsd and
  schema.map using the following command line:

  xsd cxx-parser --type-map=schema.map schema.xsd

  Or if using Expat instead of Xerces-C++ as the underlying XML parser:

  xsd cxx-parser --xml-parser=expat --type-map=schema.map schema.xsd

driver.cxx
  Parser implementations and a driver for the example. It
  shows how to mix the implementation of the base parser
  into the derived parser.


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 schema-pskel.cxx
c++ -c driver.cxx
c++ -o driver driver.o schema-pskel.o -lxerces-c

Or if using Expat as the underlying XML parser:

c++ -o driver driver.o schema-pskel.o -lexpat

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

./driver instance.xml