summaryrefslogtreecommitdiff
path: root/xsd-examples/cxx/tree/custom/contacts/README
blob: b2f95eb635e3f286c5225f74613e9172f5f7cd47 (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
This example shows how to map a user-defined XML Schema type to a custom
C++ class. It presents the simple case where the customized type is not
used as a base in the same schema. For the complex case see the taxonomy
example. 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:

contacts.xsd
  XML Schema definition for a simple contacts database.

contacts.xml
  Sample XML instance document.

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

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

  xsd cxx-tree --custom-type contact=/contact_base \
      --hxx-epilogue '#include "contacts-custom.hxx"' contacts.xsd

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

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

contacts-custom.cxx
  Source file which contains the implementation of our contact 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 contacts to STDERR.

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

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

./driver contacts.xml