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
|