annotate Lib/test/test_xml_etree.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents 1d84bf5f9478
children ff040880d1be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
1 # xml.etree test. This file contains enough tests to make sure that
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
2 # all included components work as they should. For a more extensive
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
3 # test suite, see the selftest script in the ElementTree distribution.
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
4
45468
1d84bf5f9478 Patch #2167 from calvin: Remove unused imports
Christian Heimes <christian@cheimes.de>
parents: 39277
diff changeset
5 import doctest
1d84bf5f9478 Patch #2167 from calvin: Remove unused imports
Christian Heimes <christian@cheimes.de>
parents: 39277
diff changeset
6 import sys
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
7
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
8 from test import test_support
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
9
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
10 SAMPLE_XML = """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
11 <body>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
12 <tag>text</tag>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
13 <tag />
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
14 <section>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
15 <tag>subtext</tag>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
16 </section>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
17 </body>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
18 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
19
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
20 SAMPLE_XML_NS = """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
21 <body xmlns="http://effbot.org/ns">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
22 <tag>text</tag>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
23 <tag />
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
24 <section>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
25 <tag>subtext</tag>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
26 </section>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
27 </body>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
28 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
29
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
30 def sanity():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
31 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
32 Import sanity.
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
33
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
34 >>> from xml.etree import ElementTree
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
35 >>> from xml.etree import ElementInclude
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
36 >>> from xml.etree import ElementPath
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
37 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
38
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
39 def check_method(method):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
40 if not callable(method):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
41 print method, "not callable"
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
42
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
43 def serialize(ET, elem, encoding=None):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
44 import StringIO
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
45 file = StringIO.StringIO()
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
46 tree = ET.ElementTree(elem)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
47 if encoding:
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
48 tree.write(file, encoding)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
49 else:
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
50 tree.write(file)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
51 return file.getvalue()
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
52
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
53 def summarize(elem):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
54 return elem.tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
55
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
56 def summarize_list(seq):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
57 return map(summarize, seq)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
58
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
59 def interface():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
60 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
61 Test element tree interface.
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
62
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
63 >>> from xml.etree import ElementTree as ET
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
64
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
65 >>> element = ET.Element("tag", key="value")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
66 >>> tree = ET.ElementTree(element)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
67
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
68 Make sure all standard element methods exist.
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
69
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
70 >>> check_method(element.append)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
71 >>> check_method(element.insert)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
72 >>> check_method(element.remove)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
73 >>> check_method(element.getchildren)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
74 >>> check_method(element.find)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
75 >>> check_method(element.findall)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
76 >>> check_method(element.findtext)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
77 >>> check_method(element.clear)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
78 >>> check_method(element.get)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
79 >>> check_method(element.set)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
80 >>> check_method(element.keys)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
81 >>> check_method(element.items)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
82 >>> check_method(element.getiterator)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
83
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
84 Basic method sanity checks.
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
85
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
86 >>> serialize(ET, element) # 1
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
87 '<tag key="value" />'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
88 >>> subelement = ET.Element("subtag")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
89 >>> element.append(subelement)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
90 >>> serialize(ET, element) # 2
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
91 '<tag key="value"><subtag /></tag>'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
92 >>> element.insert(0, subelement)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
93 >>> serialize(ET, element) # 3
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
94 '<tag key="value"><subtag /><subtag /></tag>'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
95 >>> element.remove(subelement)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
96 >>> serialize(ET, element) # 4
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
97 '<tag key="value"><subtag /></tag>'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
98 >>> element.remove(subelement)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
99 >>> serialize(ET, element) # 5
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
100 '<tag key="value" />'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
101 >>> element.remove(subelement)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
102 Traceback (most recent call last):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
103 ValueError: list.remove(x): x not in list
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
104 >>> serialize(ET, element) # 6
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
105 '<tag key="value" />'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
106 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
107
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
108 def find():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
109 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
110 Test find methods (including xpath syntax).
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
111
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
112 >>> from xml.etree import ElementTree as ET
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
113
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
114 >>> elem = ET.XML(SAMPLE_XML)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
115 >>> elem.find("tag").tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
116 'tag'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
117 >>> ET.ElementTree(elem).find("tag").tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
118 'tag'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
119 >>> elem.find("section/tag").tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
120 'tag'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
121 >>> ET.ElementTree(elem).find("section/tag").tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
122 'tag'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
123 >>> elem.findtext("tag")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
124 'text'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
125 >>> elem.findtext("tog")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
126 >>> elem.findtext("tog", "default")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
127 'default'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
128 >>> ET.ElementTree(elem).findtext("tag")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
129 'text'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
130 >>> elem.findtext("section/tag")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
131 'subtext'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
132 >>> ET.ElementTree(elem).findtext("section/tag")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
133 'subtext'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
134 >>> summarize_list(elem.findall("tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
135 ['tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
136 >>> summarize_list(elem.findall("*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
137 ['tag', 'tag', 'section']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
138 >>> summarize_list(elem.findall(".//tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
139 ['tag', 'tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
140 >>> summarize_list(elem.findall("section/tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
141 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
142 >>> summarize_list(elem.findall("section//tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
143 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
144 >>> summarize_list(elem.findall("section/*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
145 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
146 >>> summarize_list(elem.findall("section//*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
147 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
148 >>> summarize_list(elem.findall("section/.//*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
149 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
150 >>> summarize_list(elem.findall("*/*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
151 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
152 >>> summarize_list(elem.findall("*//*"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
153 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
154 >>> summarize_list(elem.findall("*/tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
155 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
156 >>> summarize_list(elem.findall("*/./tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
157 ['tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
158 >>> summarize_list(elem.findall("./tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
159 ['tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
160 >>> summarize_list(elem.findall(".//tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
161 ['tag', 'tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
162 >>> summarize_list(elem.findall("././tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
163 ['tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
164 >>> summarize_list(ET.ElementTree(elem).findall("/tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
165 ['tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
166 >>> summarize_list(ET.ElementTree(elem).findall("./tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
167 ['tag', 'tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
168 >>> elem = ET.XML(SAMPLE_XML_NS)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
169 >>> summarize_list(elem.findall("tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
170 []
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
171 >>> summarize_list(elem.findall("{http://effbot.org/ns}tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
172 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
173 >>> summarize_list(elem.findall(".//{http://effbot.org/ns}tag"))
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
174 ['{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag', '{http://effbot.org/ns}tag']
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
175 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
176
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
177 def parseliteral():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
178 r"""
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
179
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
180 >>> from xml.etree import ElementTree as ET
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
181
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
182 >>> element = ET.XML("<html><body>text</body></html>")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
183 >>> ET.ElementTree(element).write(sys.stdout)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
184 <html><body>text</body></html>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
185 >>> element = ET.fromstring("<html><body>text</body></html>")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
186 >>> ET.ElementTree(element).write(sys.stdout)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
187 <html><body>text</body></html>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
188 >>> print ET.tostring(element)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
189 <html><body>text</body></html>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
190 >>> print ET.tostring(element, "ascii")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
191 <?xml version='1.0' encoding='ascii'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
192 <html><body>text</body></html>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
193 >>> _, ids = ET.XMLID("<html><body>text</body></html>")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
194 >>> len(ids)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
195 0
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
196 >>> _, ids = ET.XMLID("<html><body id='body'>text</body></html>")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
197 >>> len(ids)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
198 1
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
199 >>> ids["body"].tag
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
200 'body'
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
201 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
202
39277
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
203
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
204 def check_encoding(ET, encoding):
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
205 """
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
206 >>> from xml.etree import ElementTree as ET
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
207
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
208 >>> check_encoding(ET, "ascii")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
209 >>> check_encoding(ET, "us-ascii")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
210 >>> check_encoding(ET, "iso-8859-1")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
211 >>> check_encoding(ET, "iso-8859-15")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
212 >>> check_encoding(ET, "cp437")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
213 >>> check_encoding(ET, "mac-roman")
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
214 """
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
215 ET.XML("<?xml version='1.0' encoding='%s'?><xml />" % encoding)
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
216
3a2d3eda3e16 restore test un-intentionally removed in the xmlcore purge (revision 50941)
Fred Drake <fdrake@acm.org>
parents: 39275
diff changeset
217
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
218 #
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
219 # xinclude tests (samples from appendix C of the xinclude specification)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
220
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
221 XINCLUDE = {}
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
222
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
223 XINCLUDE["C1.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
224 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
225 <document xmlns:xi="http://www.w3.org/2001/XInclude">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
226 <p>120 Mz is adequate for an average home user.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
227 <xi:include href="disclaimer.xml"/>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
228 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
229 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
230
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
231 XINCLUDE["disclaimer.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
232 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
233 <disclaimer>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
234 <p>The opinions represented herein represent those of the individual
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
235 and should not be interpreted as official policy endorsed by this
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
236 organization.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
237 </disclaimer>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
238 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
239
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
240 XINCLUDE["C2.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
241 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
242 <document xmlns:xi="http://www.w3.org/2001/XInclude">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
243 <p>This document has been accessed
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
244 <xi:include href="count.txt" parse="text"/> times.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
245 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
246 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
247
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
248 XINCLUDE["count.txt"] = "324387"
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
249
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
250 XINCLUDE["C3.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
251 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
252 <document xmlns:xi="http://www.w3.org/2001/XInclude">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
253 <p>The following is the source of the "data.xml" resource:</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
254 <example><xi:include href="data.xml" parse="text"/></example>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
255 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
256 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
257
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
258 XINCLUDE["data.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
259 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
260 <data>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
261 <item><![CDATA[Brooks & Shields]]></item>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
262 </data>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
263 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
264
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
265 XINCLUDE["C5.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
266 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
267 <div xmlns:xi="http://www.w3.org/2001/XInclude">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
268 <xi:include href="example.txt" parse="text">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
269 <xi:fallback>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
270 <xi:include href="fallback-example.txt" parse="text">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
271 <xi:fallback><a href="mailto:bob@example.org">Report error</a></xi:fallback>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
272 </xi:include>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
273 </xi:fallback>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
274 </xi:include>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
275 </div>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
276 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
277
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
278 XINCLUDE["default.xml"] = """\
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
279 <?xml version='1.0'?>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
280 <document xmlns:xi="http://www.w3.org/2001/XInclude">
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
281 <p>Example.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
282 <xi:include href="samples/simple.xml"/>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
283 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
284 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
285
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
286 def xinclude_loader(href, parse="xml", encoding=None):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
287 try:
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
288 data = XINCLUDE[href]
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
289 except KeyError:
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
290 raise IOError("resource not found")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
291 if parse == "xml":
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
292 from xml.etree.ElementTree import XML
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
293 return XML(data)
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
294 return data
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
295
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
296 def xinclude():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
297 r"""
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
298 Basic inclusion example (XInclude C.1)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
299
39275
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
300 >>> from xml.etree import ElementTree as ET
cb1e432b4919 expunge the xmlcore changes:
Fred Drake <fdrake@acm.org>
parents: 36052
diff changeset
301 >>> from xml.etree import ElementInclude
36025
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
302
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
303 >>> document = xinclude_loader("C1.xml")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
304 >>> ElementInclude.include(document, xinclude_loader)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
305 >>> print serialize(ET, document) # C1
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
306 <document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
307 <p>120 Mz is adequate for an average home user.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
308 <disclaimer>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
309 <p>The opinions represented herein represent those of the individual
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
310 and should not be interpreted as official policy endorsed by this
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
311 organization.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
312 </disclaimer>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
313 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
314
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
315 Textual inclusion example (XInclude C.2)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
316
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
317 >>> document = xinclude_loader("C2.xml")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
318 >>> ElementInclude.include(document, xinclude_loader)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
319 >>> print serialize(ET, document) # C2
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
320 <document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
321 <p>This document has been accessed
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
322 324387 times.</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
323 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
324
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
325 Textual inclusion of XML example (XInclude C.3)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
326
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
327 >>> document = xinclude_loader("C3.xml")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
328 >>> ElementInclude.include(document, xinclude_loader)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
329 >>> print serialize(ET, document) # C3
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
330 <document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
331 <p>The following is the source of the "data.xml" resource:</p>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
332 <example>&lt;?xml version='1.0'?&gt;
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
333 &lt;data&gt;
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
334 &lt;item&gt;&lt;![CDATA[Brooks &amp; Shields]]&gt;&lt;/item&gt;
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
335 &lt;/data&gt;
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
336 </example>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
337 </document>
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
338
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
339 Fallback example (XInclude C.5)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
340 Note! Fallback support is not yet implemented
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
341
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
342 >>> document = xinclude_loader("C5.xml")
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
343 >>> ElementInclude.include(document, xinclude_loader)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
344 Traceback (most recent call last):
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
345 IOError: resource not found
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
346 >>> # print serialize(ET, document) # C5
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
347
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
348 """
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
349
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
350 def test_main():
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
351 from test import test_xml_etree
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
352 test_support.run_doctest(test_xml_etree, verbosity=True)
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
353
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
354 if __name__ == '__main__':
db1c0aabc405 Subversion settings:
Armin Rigo <arigo@tunes.org>
parents: 36020
diff changeset
355 test_main()