summaryrefslogtreecommitdiff
path: root/examples/cxx/tree/custom/comments/README
blob: 8fd69d0858f3f89bb91823ca2c016a5bf97e144c (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
This example shows how to customize the anyType XML Schema built-in
type to implement preservation of comments stored in XML documents.
Because anyType is a base type for every generated type, you can use
this technique to implement custom functionality that spans the
entire type system. For more information on the C++/Tree mapping
customization see the C++/Tree Mapping Customization Guide[2].

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

The example consists of the following files:

people.xsd
  XML Schema definition for a simple person record vocabulary.

people.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:anyType type.

people.hxx
people.ixx
people.cxx
  C++ types that represent the person record 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 are generated by XSD
  from people.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::type 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:type
  class.

dom-parse.hxx
dom-parse.cxx
  Definition and implementation of the parse() function that
  parses an XML document to a DOM document while preserving
  XML comments.

driver.cxx
  Driver for the example. It first calls the above parse() function
  to parse the input file to a DOM document. It then parses the DOM
  document to the object model and performs a number of modifications
  on this object model. Finally, it serializes the modified object
  model back to XML, including XML comments.

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

$ ./driver people.xml