blob: f7f6989ee4945c58d99cf8a17f05371668819945 (
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
|
This example shows how to customize the XML Schema built-in types by mapping
xsd:date built-in type to the date class from the Boost date_time library.
You will need the Boost date_time library[1] installed in order to build
and run this example. For more information on the C++/Tree mapping
customization see the C++/Tree Mapping Customization Guide[2].
[1] http://www.boost.org
[2] http://wiki.codesynthesis.com/Tree/Customization_guide
The example consists of the following files:
calendar.xsd
XML Schema definition for a simple calendar format.
calendar.xml
Sample XML instance document.
xml-schema.hxx
C++ types for XML Schema built-in types. This header file is generated
by XSD using the --generate-xml-schema option. The --custom-type option
is also used to customize the xsd:date type.
calendar.hxx
calendar.ixx
calendar.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 are generated by XSD from calendar.xsd with the
--extern-xml-schema option in order to include xml-schema.hxx.
xml-schema-custom.hxx
Header file which defines our own xml_schema::date class. It is
included at the end of xml-schema.hxx using the --hxx-epilogue
option.
xml-schema-custom.cxx
Source file which contains the implementation of our xml_schema:date
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 calendar events to STDERR.
To run the example on the sample XML instance document simply execute:
$ ./driver calendar.xml
|