blob: bc209f61f669554908ee8c43ad5e195f5339c981 (
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
|
This example shows how to use ordered types to capture mixed content
text and to maintain order information between elements and text.
In this example we use mixed content model to describe text with
embedded links in the form:
This paragraph talks about <a href="uri">time</a>.
The example transforms such text into plain text with references in
the form:
This paragraph talks about time[uri].
It also saves the modified text back to XML in order to verify the
element and text order.
The example consists of the following files:
text.xsd
XML Schema which describes "text with links" instance documents.
text.xml
Sample XML instance document.
text.hxx
text.cxx
C++ types that represent the given vocabulary as well as a set of
parsing and serialization functions.
These files are generated by the XSD compiler from text.xsd using the
following command line:
xsd cxx-tree --generate-serialization --ordered-type-mixed text.xsd
Note that the --ordered-type-mixed option is used to indicate to the XSD
compiler that all types with mixed content should be automatically treated
as ordered.
driver.cxx
Driver for the example. It first calls one of the parsing functions
that constructs the object model from the input XML file. It then
iterates over the text and elements in the content order to convert
the document to its plain text representation. The driver then adds
another paragraph of text and a link to the object model while showing
how to maintain the content order. Finally, it saves the modified
text back to XML to verify that the content order is preserved in
the output document.
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 text.cxx
c++ -c driver.cxx
c++ -o driver driver.o text.o -lxerces-c
To run the example on the sample XML instance document execute:
./driver text.xml
|