summaryrefslogtreecommitdiff
path: root/xsd-examples/cxx/tree/custom/wildcard/README
blob: 8b5b2f0030377d43c550090dcde5116192d6dccb (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
52
53
54
55
56
57
58
59
60
61
This example shows how to use type customization to parse and serialize
a specific attribute that is matched by a wildcard (anyAttribute). The
example achieves this by customizing the type to include the data
members and accessors/modifiers that represent the attribute as well as
the parsing constructor and serialization operator where the attribute
value is extracted from and inserted back to DOM, respectively. For
more information on the C++/Tree mapping customization see the C++/Tree
Mapping Customization Guide[1].

[1] http://wiki.codesynthesis.com/Tree/Customization_guide

The example consists of the following files:

wildcard.xsd
  XML Schema definition for simple data type and element.

wildcard.xml
  Sample XML instance document.

wildcard.hxx
wildcard.ixx
wildcard.cxx
  C++ types that represent the given vocabulary, a set of parsing
  functions that convert XML instance documents to a tree-like in-memory
  object model, and a set of serialization functions that convert the
  object model back to XML.

  These files are generated by the XSD compiler from wildcard.xsd using
  the following command line:

  xsd cxx-tree --generate-serialization --generate-ostream \
      --custom-type data=/data_base \
      --hxx-epilogue '#include "wildcard-custom.hxx"' wildcard.xsd

  The --custom-type option is used to customize the data type.

wildcard-custom.hxx
  Header file which defines our own data class by inheriting from the
  generated data_base. It is included at the end of wildcard.hxx using
  the --hxx-epilogue option.

wildcard-custom.cxx
  Source file which contains the implementation of our data class.

driver.cxx
  Driver for the example. It first calls one of the parsing functions
  that constructs the object model from the input file. It then prints
  the data to STDERR, including the extra attribute. Finally, the driver
  serializes the object model back to XML.

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 wildcard.cxx
c++ -c wildcard-custom.cxx
c++ -c driver.cxx
c++ -o driver driver.o wildcard.o wildcard-custom.o -lxerces-c

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

./driver wildcard.xml