1 <?xml version="1.0" encoding="ascii"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3 "DTD/xhtml1-transitional.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6 <title>lxml.tests.selftest</title>
7 <link rel="stylesheet" href="epydoc.css" type="text/css" />
8 <script type="text/javascript" src="epydoc.js"></script>
11 <body bgcolor="white" text="black" link="blue" vlink="#204080"
13 <!-- ==================== NAVIGATION BAR ==================== -->
14 <table class="navbar" border="0" width="100%" cellpadding="0"
15 bgcolor="#a0c0ff" cellspacing="0">
18 <th> <a
19 href="lxml-module.html">Home</a> </th>
22 <th> <a
23 href="module-tree.html">Trees</a> </th>
26 <th> <a
27 href="identifier-index.html">Indices</a> </th>
30 <th> <a
31 href="help.html">Help</a> </th>
33 <!-- Project homepage -->
34 <th class="navbar" align="right" width="100%">
35 <table border="0" cellpadding="0" cellspacing="0">
36 <tr><th class="navbar" align="center"
37 ><a class="navbar" target="_top" href="/">lxml API</a></th>
41 <table width="100%" cellpadding="0" cellspacing="0">
44 <span class="breadcrumbs">
45 <a href="lxml-module.html">Package lxml</a> ::
46 <a href="lxml.tests-module.html">Package tests</a> ::
51 <table cellpadding="0" cellspacing="0">
52 <!-- hide/show private -->
53 <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
54 onclick="toggle_private();">hide private</a>]</span></td></tr>
55 <tr><td align="right"><span class="options"
56 >[<a href="frames.html" target="_top">frames</a
57 >] | <a href="lxml.tests.selftest-module.html"
58 target="_top">no frames</a>]</span></td></tr>
63 <!-- ==================== MODULE DESCRIPTION ==================== -->
64 <h1 class="epydoc">Module selftest</h1><p class="nomargin-top"><span class="codelink"><a href="lxml.tests.selftest-pysrc.html">source code</a></span></p>
65 <!-- ==================== FUNCTIONS ==================== -->
66 <a name="section-Functions"></a>
67 <table class="summary" border="1" cellpadding="3"
68 cellspacing="0" width="100%" bgcolor="white">
69 <tr bgcolor="#70b0f0" class="table-header">
70 <td colspan="2" class="table-header">
71 <table border="0" cellpadding="0" cellspacing="0" width="100%">
73 <td align="left"><span class="table-header">Functions</span></td>
74 <td align="right" valign="top"
75 ><span class="options">[<a href="#section-Functions"
76 class="privatelink" onclick="toggle_private();"
77 >hide private</a>]</span></td>
83 <td width="15%" align="right" valign="top" class="summary">
84 <span class="summary-type"> </span>
85 </td><td class="summary">
86 <table width="100%" cellpadding="0" cellspacing="0" border="0">
88 <td><span class="summary-sig"><a name="stdout"></a><span class="summary-sig-name">stdout</span>()</span></td>
89 <td align="right" valign="top">
90 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#stdout">source code</a></span>
99 <td width="15%" align="right" valign="top" class="summary">
100 <span class="summary-type"> </span>
101 </td><td class="summary">
102 <table width="100%" cellpadding="0" cellspacing="0" border="0">
104 <td><span class="summary-sig"><a name="fix_compatibility"></a><span class="summary-sig-name">fix_compatibility</span>(<span class="summary-sig-arg">xml_data</span>)</span></td>
105 <td align="right" valign="top">
106 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#fix_compatibility">source code</a></span>
115 <td width="15%" align="right" valign="top" class="summary">
116 <span class="summary-type"> </span>
117 </td><td class="summary">
118 <table width="100%" cellpadding="0" cellspacing="0" border="0">
120 <td><span class="summary-sig"><a name="serialize"></a><span class="summary-sig-name">serialize</span>(<span class="summary-sig-arg">elem</span>,
121 <span class="summary-sig-arg">**options</span>)</span></td>
122 <td align="right" valign="top">
123 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#serialize">source code</a></span>
132 <td width="15%" align="right" valign="top" class="summary">
133 <span class="summary-type"> </span>
134 </td><td class="summary">
135 <table width="100%" cellpadding="0" cellspacing="0" border="0">
137 <td><span class="summary-sig"><a name="summarize"></a><span class="summary-sig-name">summarize</span>(<span class="summary-sig-arg">elem</span>)</span></td>
138 <td align="right" valign="top">
139 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#summarize">source code</a></span>
148 <td width="15%" align="right" valign="top" class="summary">
149 <span class="summary-type"> </span>
150 </td><td class="summary">
151 <table width="100%" cellpadding="0" cellspacing="0" border="0">
153 <td><span class="summary-sig"><a name="summarize_list"></a><span class="summary-sig-name">summarize_list</span>(<span class="summary-sig-arg">seq</span>)</span></td>
154 <td align="right" valign="top">
155 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#summarize_list">source code</a></span>
164 <td width="15%" align="right" valign="top" class="summary">
165 <span class="summary-type"> </span>
166 </td><td class="summary">
167 <table width="100%" cellpadding="0" cellspacing="0" border="0">
169 <td><span class="summary-sig"><a name="normalize_crlf"></a><span class="summary-sig-name">normalize_crlf</span>(<span class="summary-sig-arg">tree</span>)</span></td>
170 <td align="right" valign="top">
171 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#normalize_crlf">source code</a></span>
180 <td width="15%" align="right" valign="top" class="summary">
181 <span class="summary-type"> </span>
182 </td><td class="summary">
183 <table width="100%" cellpadding="0" cellspacing="0" border="0">
185 <td><span class="summary-sig"><a name="check_string"></a><span class="summary-sig-name">check_string</span>(<span class="summary-sig-arg">string</span>)</span></td>
186 <td align="right" valign="top">
187 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#check_string">source code</a></span>
196 <td width="15%" align="right" valign="top" class="summary">
197 <span class="summary-type"> </span>
198 </td><td class="summary">
199 <table width="100%" cellpadding="0" cellspacing="0" border="0">
201 <td><span class="summary-sig"><a name="check_string_or_none"></a><span class="summary-sig-name">check_string_or_none</span>(<span class="summary-sig-arg">value</span>)</span></td>
202 <td align="right" valign="top">
203 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#check_string_or_none">source code</a></span>
212 <td width="15%" align="right" valign="top" class="summary">
213 <span class="summary-type"> </span>
214 </td><td class="summary">
215 <table width="100%" cellpadding="0" cellspacing="0" border="0">
217 <td><span class="summary-sig"><a name="check_mapping"></a><span class="summary-sig-name">check_mapping</span>(<span class="summary-sig-arg">mapping</span>)</span></td>
218 <td align="right" valign="top">
219 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#check_mapping">source code</a></span>
228 <td width="15%" align="right" valign="top" class="summary">
229 <span class="summary-type"> </span>
230 </td><td class="summary">
231 <table width="100%" cellpadding="0" cellspacing="0" border="0">
233 <td><span class="summary-sig"><a name="check_element"></a><span class="summary-sig-name">check_element</span>(<span class="summary-sig-arg">element</span>)</span></td>
234 <td align="right" valign="top">
235 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#check_element">source code</a></span>
244 <td width="15%" align="right" valign="top" class="summary">
245 <span class="summary-type"> </span>
246 </td><td class="summary">
247 <table width="100%" cellpadding="0" cellspacing="0" border="0">
249 <td><span class="summary-sig"><a name="check_element_tree"></a><span class="summary-sig-name">check_element_tree</span>(<span class="summary-sig-arg">tree</span>)</span></td>
250 <td align="right" valign="top">
251 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#check_element_tree">source code</a></span>
260 <td width="15%" align="right" valign="top" class="summary">
261 <span class="summary-type"> </span>
262 </td><td class="summary">
263 <table width="100%" cellpadding="0" cellspacing="0" border="0">
265 <td><span class="summary-sig"><a name="interface"></a><span class="summary-sig-name">interface</span>()</span><br />
266 Test element tree interface.</td>
267 <td align="right" valign="top">
268 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#interface">source code</a></span>
277 <td width="15%" align="right" valign="top" class="summary">
278 <span class="summary-type"> </span>
279 </td><td class="summary">
280 <table width="100%" cellpadding="0" cellspacing="0" border="0">
282 <td><span class="summary-sig"><a name="simpleops"></a><span class="summary-sig-name">simpleops</span>()</span></td>
283 <td align="right" valign="top">
284 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#simpleops">source code</a></span>
293 <td width="15%" align="right" valign="top" class="summary">
294 <span class="summary-type"> </span>
295 </td><td class="summary">
296 <table width="100%" cellpadding="0" cellspacing="0" border="0">
298 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#find" class="summary-sig-name">find</a>()</span><br />
299 Test find methods (including xpath syntax).</td>
300 <td align="right" valign="top">
301 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#find">source code</a></span>
310 <td width="15%" align="right" valign="top" class="summary">
311 <span class="summary-type"> </span>
312 </td><td class="summary">
313 <table width="100%" cellpadding="0" cellspacing="0" border="0">
315 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#bad_find" class="summary-sig-name">bad_find</a>()</span><br />
316 Check bad or unsupported path expressions.</td>
317 <td align="right" valign="top">
318 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#bad_find">source code</a></span>
327 <td width="15%" align="right" valign="top" class="summary">
328 <span class="summary-type"> </span>
329 </td><td class="summary">
330 <table width="100%" cellpadding="0" cellspacing="0" border="0">
332 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#parsefile" class="summary-sig-name">parsefile</a>()</span><br />
333 Test parsing from file.</td>
334 <td align="right" valign="top">
335 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#parsefile">source code</a></span>
344 <td width="15%" align="right" valign="top" class="summary">
345 <span class="summary-type"> </span>
346 </td><td class="summary">
347 <table width="100%" cellpadding="0" cellspacing="0" border="0">
349 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#parseliteral" class="summary-sig-name">parseliteral</a>()</span><br />
350 ## >>> sequence = ["<html><body>", "text</bo", "dy></html>"]
351 ## >>> element = ElementTree.fromstringlist(sequence)
352 ## >>> ElementTree.ElementTree(element).write(stdout())
353 ## <html><body>text</body></html></td>
354 <td align="right" valign="top">
355 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#parseliteral">source code</a></span>
364 <td width="15%" align="right" valign="top" class="summary">
365 <span class="summary-type"> </span>
366 </td><td class="summary">
367 <table width="100%" cellpadding="0" cellspacing="0" border="0">
369 <td><span class="summary-sig"><a name="iterparse"></a><span class="summary-sig-name">iterparse</span>()</span><br />
370 Test iterparse interface.</td>
371 <td align="right" valign="top">
372 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#iterparse">source code</a></span>
381 <td width="15%" align="right" valign="top" class="summary">
382 <span class="summary-type"> </span>
383 </td><td class="summary">
384 <table width="100%" cellpadding="0" cellspacing="0" border="0">
386 <td><span class="summary-sig"><a name="writefile"></a><span class="summary-sig-name">writefile</span>()</span><br />
387 ## Test tag suppression
388 ## >>> elem.tag = None
389 ## >>> serialize(elem)
390 ## 'text<subtag>subtext</subtag>'</td>
391 <td align="right" valign="top">
392 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#writefile">source code</a></span>
401 <td width="15%" align="right" valign="top" class="summary">
402 <span class="summary-type"> </span>
403 </td><td class="summary">
404 <table width="100%" cellpadding="0" cellspacing="0" border="0">
406 <td><span class="summary-sig"><a name="writestring"></a><span class="summary-sig-name">writestring</span>()</span></td>
407 <td align="right" valign="top">
408 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#writestring">source code</a></span>
417 <td width="15%" align="right" valign="top" class="summary">
418 <span class="summary-type"> </span>
419 </td><td class="summary">
420 <table width="100%" cellpadding="0" cellspacing="0" border="0">
422 <td><span class="summary-sig"><a name="encoding"></a><span class="summary-sig-name">encoding</span>()</span><br />
423 Test encoding issues.</td>
424 <td align="right" valign="top">
425 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#encoding">source code</a></span>
434 <td width="15%" align="right" valign="top" class="summary">
435 <span class="summary-type"> </span>
436 </td><td class="summary">
437 <table width="100%" cellpadding="0" cellspacing="0" border="0">
439 <td><span class="summary-sig"><a name="iterators"></a><span class="summary-sig-name">iterators</span>()</span><br />
441 <td align="right" valign="top">
442 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#iterators">source code</a></span>
451 <td width="15%" align="right" valign="top" class="summary">
452 <span class="summary-type"> </span>
453 </td><td class="summary">
454 <table width="100%" cellpadding="0" cellspacing="0" border="0">
456 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#namespace" class="summary-sig-name">namespace</a>()</span><br />
457 Test namespace issues.</td>
458 <td align="right" valign="top">
459 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#namespace">source code</a></span>
468 <td width="15%" align="right" valign="top" class="summary">
469 <span class="summary-type"> </span>
470 </td><td class="summary">
471 <table width="100%" cellpadding="0" cellspacing="0" border="0">
473 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#qname" class="summary-sig-name">qname</a>()</span><br />
474 Test QName handling.</td>
475 <td align="right" valign="top">
476 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#qname">source code</a></span>
485 <td width="15%" align="right" valign="top" class="summary">
486 <span class="summary-type"> </span>
487 </td><td class="summary">
488 <table width="100%" cellpadding="0" cellspacing="0" border="0">
490 <td><span class="summary-sig"><a name="xpath_tokenizer"></a><span class="summary-sig-name">xpath_tokenizer</span>(<span class="summary-sig-arg">p</span>)</span><br />
491 Test the XPath tokenizer.</td>
492 <td align="right" valign="top">
493 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#xpath_tokenizer">source code</a></span>
502 <td width="15%" align="right" valign="top" class="summary">
503 <span class="summary-type"> </span>
504 </td><td class="summary">
505 <table width="100%" cellpadding="0" cellspacing="0" border="0">
507 <td><span class="summary-sig"><a name="xinclude_loader"></a><span class="summary-sig-name">xinclude_loader</span>(<span class="summary-sig-arg">href</span>,
508 <span class="summary-sig-arg">parse</span>=<span class="summary-sig-default"><code class="variable-quote">'</code><code class="variable-string">xml</code><code class="variable-quote">'</code></span>,
509 <span class="summary-sig-arg">encoding</span>=<span class="summary-sig-default">None</span>)</span></td>
510 <td align="right" valign="top">
511 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#xinclude_loader">source code</a></span>
520 <td width="15%" align="right" valign="top" class="summary">
521 <span class="summary-type"> </span>
522 </td><td class="summary">
523 <table width="100%" cellpadding="0" cellspacing="0" border="0">
525 <td><span class="summary-sig"><a href="lxml.tests.selftest-module.html#xinclude" class="summary-sig-name">xinclude</a>()</span><br />
526 Basic inclusion example (XInclude C.1)</td>
527 <td align="right" valign="top">
528 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#xinclude">source code</a></span>
537 <td width="15%" align="right" valign="top" class="summary">
538 <span class="summary-type"> </span>
539 </td><td class="summary">
540 <table width="100%" cellpadding="0" cellspacing="0" border="0">
542 <td><span class="summary-sig"><a name="xinclude_default"></a><span class="summary-sig-name">xinclude_default</span>()</span></td>
543 <td align="right" valign="top">
544 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#xinclude_default">source code</a></span>
553 <td width="15%" align="right" valign="top" class="summary">
554 <span class="summary-type"> </span>
555 </td><td class="summary">
556 <table width="100%" cellpadding="0" cellspacing="0" border="0">
558 <td><span class="summary-sig"><a name="bug_xmltoolkit25"></a><span class="summary-sig-name">bug_xmltoolkit25</span>()</span><br />
559 typo in ElementTree.findtext</td>
560 <td align="right" valign="top">
561 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#bug_xmltoolkit25">source code</a></span>
570 <td width="15%" align="right" valign="top" class="summary">
571 <span class="summary-type"> </span>
572 </td><td class="summary">
573 <table width="100%" cellpadding="0" cellspacing="0" border="0">
575 <td><span class="summary-sig"><a name="bug_xmltoolkit28"></a><span class="summary-sig-name">bug_xmltoolkit28</span>()</span><br />
576 .//tag causes exceptions</td>
577 <td align="right" valign="top">
578 <span class="codelink"><a href="lxml.tests.selftest-pysrc.html#bug_xmltoolkit28">source code</a></span>
587 <!-- ==================== VARIABLES ==================== -->
588 <a name="section-Variables"></a>
589 <table class="summary" border="1" cellpadding="3"
590 cellspacing="0" width="100%" bgcolor="white">
591 <tr bgcolor="#70b0f0" class="table-header">
592 <td colspan="2" class="table-header">
593 <table border="0" cellpadding="0" cellspacing="0" width="100%">
595 <td align="left"><span class="table-header">Variables</span></td>
596 <td align="right" valign="top"
597 ><span class="options">[<a href="#section-Variables"
598 class="privatelink" onclick="toggle_private();"
599 >hide private</a>]</span></td>
605 <td width="15%" align="right" valign="top" class="summary">
606 <span class="summary-type"> </span>
607 </td><td class="summary">
608 <a href="lxml.tests.selftest-module.html#SAMPLE_XML" class="summary-name">SAMPLE_XML</a> = <code title="ElementTree.XML("""
610 <tag class='a'>text</tag>
611 <tag class='b' />
613 <tag class='b' id='inner'>subtext</tag>
616 ...">ElementTree.XML(<code class="variable-ellipsis">...</code></code>
620 <td width="15%" align="right" valign="top" class="summary">
621 <span class="summary-type"> </span>
622 </td><td class="summary">
623 <a href="lxml.tests.selftest-module.html#ENTITY_XML" class="summary-name">ENTITY_XML</a> = <code title="'''<!DOCTYPE points [
624 <!ENTITY % user-entities SYSTEM \'user-entities.xml\'>
627 <document>&entity;</document>
628 '''"><code class="variable-quote">'</code><code class="variable-string"><!DOCTYPE points [\n<!ENTITY % user-entities SYS</code><code class="variable-ellipsis">...</code></code>
632 <td width="15%" align="right" valign="top" class="summary">
633 <span class="summary-type"> </span>
634 </td><td class="summary">
635 <a href="lxml.tests.selftest-module.html#XINCLUDE" class="summary-name">XINCLUDE</a> = <code title="{'C1.xml': '''<?xml version=\'1.0\'?>
636 <document xmlns:xi="http://www.w3.org/2001/XInclude">
637 <p>120 Mz is adequate for an average home user.</p>
638 <xi:include href="disclaimer.xml"/>
641 'C2.xml': '''<?xml version=\'1.0\'?>
642 <document xmlns:xi="http://www.w3.org/2001/XInclude">
643 ..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">C1.xml</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'</code><code class="variable-string"><?xml version=\'1.0\'?>\n<document xmln</code><code class="variable-ellipsis">...</code></code>
647 <td width="15%" align="right" valign="top" class="summary">
648 <span class="summary-type"> </span>
649 </td><td class="summary">
650 <a name="__package__"></a><span class="summary-name">__package__</span> = <code title="'lxml.tests'"><code class="variable-quote">'</code><code class="variable-string">lxml.tests</code><code class="variable-quote">'</code></code>
654 <!-- ==================== FUNCTION DETAILS ==================== -->
655 <a name="section-FunctionDetails"></a>
656 <table class="details" border="1" cellpadding="3"
657 cellspacing="0" width="100%" bgcolor="white">
658 <tr bgcolor="#70b0f0" class="table-header">
659 <td colspan="2" class="table-header">
660 <table border="0" cellpadding="0" cellspacing="0" width="100%">
662 <td align="left"><span class="table-header">Function Details</span></td>
663 <td align="right" valign="top"
664 ><span class="options">[<a href="#section-FunctionDetails"
665 class="privatelink" onclick="toggle_private();"
666 >hide private</a>]</span></td>
674 <table class="details" border="1" cellpadding="3"
675 cellspacing="0" width="100%" bgcolor="white">
677 <table width="100%" cellpadding="0" cellspacing="0" border="0">
678 <tr valign="top"><td>
679 <h3 class="epydoc"><span class="sig"><span class="sig-name">find</span>()</span>
681 </td><td align="right" valign="top"
682 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#find">source code</a></span>
686 <p>Test find methods (including xpath syntax).</p>
687 <pre class="py-doctest">
688 <span class="py-prompt">>>> </span>elem = SAMPLE_XML
689 <span class="py-prompt">>>> </span>elem.find(<span class="py-string">"tag"</span>).tag
690 <span class="py-output">'tag'</span>
691 <span class="py-output"></span><span class="py-prompt">>>> </span>ElementTree.ElementTree(elem).find(<span class="py-string">"tag"</span>).tag
692 <span class="py-output">'tag'</span>
693 <span class="py-output"></span><span class="py-prompt">>>> </span>elem.find(<span class="py-string">"section/tag"</span>).tag
694 <span class="py-output">'tag'</span>
695 <span class="py-output"></span><span class="py-prompt">>>> </span>ElementTree.ElementTree(elem).find(<span class="py-string">"section/tag"</span>).tag
696 <span class="py-output">'tag'</span>
697 <span class="py-output"></span><span class="py-prompt">>>> </span>elem.findtext(<span class="py-string">"tag"</span>)
698 <span class="py-output">'text'</span>
699 <span class="py-output"></span><span class="py-prompt">>>> </span>elem.findtext(<span class="py-string">"tog"</span>)
700 <span class="py-prompt">>>> </span>elem.findtext(<span class="py-string">"tog"</span>, <span class="py-string">"default"</span>)
701 <span class="py-output">'default'</span>
702 <span class="py-output"></span><span class="py-prompt">>>> </span>ElementTree.ElementTree(elem).findtext(<span class="py-string">"tag"</span>)
703 <span class="py-output">'text'</span>
704 <span class="py-output"></span><span class="py-prompt">>>> </span>elem.findtext(<span class="py-string">"section/tag"</span>)
705 <span class="py-output">'subtext'</span>
706 <span class="py-output"></span><span class="py-prompt">>>> </span>ElementTree.ElementTree(elem).findtext(<span class="py-string">"section/tag"</span>)
707 <span class="py-output">'subtext'</span>
708 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"tag"</span>))
709 <span class="py-output">['tag', 'tag']</span>
710 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"*"</span>))
711 <span class="py-output">['tag', 'tag', 'section']</span>
712 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag"</span>))
713 <span class="py-output">['tag', 'tag', 'tag']</span>
714 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section/tag"</span>))
715 <span class="py-output">['tag']</span>
716 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section//tag"</span>))
717 <span class="py-output">['tag']</span>
718 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section/*"</span>))
719 <span class="py-output">['tag']</span>
720 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section//*"</span>))
721 <span class="py-output">['tag']</span>
722 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section/.//*"</span>))
723 <span class="py-output">['tag']</span>
724 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"*/*"</span>))
725 <span class="py-output">['tag']</span>
726 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"*//*"</span>))
727 <span class="py-output">['tag']</span>
728 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"*/tag"</span>))
729 <span class="py-output">['tag']</span>
730 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"*/./tag"</span>))
731 <span class="py-output">['tag']</span>
732 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"./tag"</span>))
733 <span class="py-output">['tag', 'tag']</span>
734 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag"</span>))
735 <span class="py-output">['tag', 'tag', 'tag']</span>
736 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"././tag"</span>))
737 <span class="py-output">['tag', 'tag']</span>
738 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag[@class]"</span>))
739 <span class="py-output">['tag', 'tag', 'tag']</span>
740 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag[@class='a']"</span>))
741 <span class="py-output">['tag']</span>
742 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag[@class='b']"</span>))
743 <span class="py-output">['tag', 'tag']</span>
744 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//tag[@id]"</span>))
745 <span class="py-output">['tag']</span>
746 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//section[tag]"</span>))
747 <span class="py-output">['section']</span>
748 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">".//section[element]"</span>))
749 <span class="py-output">[]</span>
750 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"../tag"</span>))
751 <span class="py-output">[]</span>
752 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(elem.findall(<span class="py-string">"section/../tag"</span>))
753 <span class="py-output">['tag', 'tag']</span>
754 <span class="py-output"></span><span class="py-prompt">>>> </span>summarize_list(ElementTree.ElementTree(elem).findall(<span class="py-string">"./tag"</span>))
755 <span class="py-output">['tag', 'tag']</span></pre>
756 <p>FIXME: ET's Path module handles this case incorrectly; this gives
757 a warning in 1.3, and the behaviour will be modified in 1.4.</p>
758 <pre class="py-doctest">
759 <span class="py-prompt">>>> </span>summarize_list(ElementTree.ElementTree(elem).findall(<span class="py-string">"/tag"</span>))
760 <span class="py-output">['tag', 'tag']</span></pre>
765 <a name="bad_find"></a>
767 <table class="details" border="1" cellpadding="3"
768 cellspacing="0" width="100%" bgcolor="white">
770 <table width="100%" cellpadding="0" cellspacing="0" border="0">
771 <tr valign="top"><td>
772 <h3 class="epydoc"><span class="sig"><span class="sig-name">bad_find</span>()</span>
774 </td><td align="right" valign="top"
775 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#bad_find">source code</a></span>
779 <p>Check bad or unsupported path expressions.</p>
780 <pre class="py-doctest">
781 <span class="py-prompt">>>> </span>elem = SAMPLE_XML
782 <span class="py-prompt">>>> </span>elem.findall(<span class="py-string">"/tag"</span>)
783 <span class="py-except">Traceback (most recent call last):</span>
784 <span class="py-except">SyntaxError: cannot use absolute path on element</span></pre>
785 <p># this is supported in ET 1.3:
786 #>>> elem.findall("section//")
787 #Traceback (most recent call last):
788 #SyntaxError: invalid path</p>
793 <a name="parsefile"></a>
795 <table class="details" border="1" cellpadding="3"
796 cellspacing="0" width="100%" bgcolor="white">
798 <table width="100%" cellpadding="0" cellspacing="0" border="0">
799 <tr valign="top"><td>
800 <h3 class="epydoc"><span class="sig"><span class="sig-name">parsefile</span>()</span>
802 </td><td align="right" valign="top"
803 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#parsefile">source code</a></span>
808 <p>Test parsing from file.</p>
809 <pre class="py-doctest">
810 <span class="py-prompt">>>> </span>tree = ElementTree.parse(<span class="py-string">"samples/simple.xml"</span>)
811 <span class="py-prompt">>>> </span>normalize_crlf(tree)
812 <span class="py-prompt">>>> </span>tree.write(stdout())
813 <span class="py-output"><root></span>
814 <span class="py-output"> <element key="value">text</element></span>
815 <span class="py-output"> <element>text</element>tail</span>
816 <span class="py-output"> <empty-element/></span>
817 <span class="py-output"></root></span>
818 <span class="py-output"></span><span class="py-prompt">>>> </span>tree = ElementTree.parse(<span class="py-string">"samples/simple-ns.xml"</span>)
819 <span class="py-prompt">>>> </span>normalize_crlf(tree)
820 <span class="py-prompt">>>> </span>tree.write(stdout())
821 <span class="py-output"><root xmlns="http://namespace/"></span>
822 <span class="py-output"> <element key="value">text</element></span>
823 <span class="py-output"> <element>text</element>tail</span>
824 <span class="py-output"> <empty-element/></span>
825 <span class="py-output"></root></span></pre>
827 <p>## <ns0:root xmlns:ns0="http://namespace/">
828 ## <ns0:element key="value">text</ns0:element>
829 ## <ns0:element>text</ns0:element>tail
830 ## <ns0:empty-element/>
831 ## </ns0:root></p>
836 <a name="parseliteral"></a>
838 <table class="details" border="1" cellpadding="3"
839 cellspacing="0" width="100%" bgcolor="white">
841 <table width="100%" cellpadding="0" cellspacing="0" border="0">
842 <tr valign="top"><td>
843 <h3 class="epydoc"><span class="sig"><span class="sig-name">parseliteral</span>()</span>
845 </td><td align="right" valign="top"
846 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#parseliteral">source code</a></span>
851 <pre class="py-doctest">
852 <span class="py-prompt">>>> </span>element = ElementTree.XML(<span class="py-string">"<html><body>text</body></html>"</span>)
853 <span class="py-prompt">>>> </span>ElementTree.ElementTree(element).write(stdout())
854 <span class="py-output"><html><body>text</body></html></span>
855 <span class="py-output"></span><span class="py-prompt">>>> </span>element = ElementTree.fromstring(<span class="py-string">"<html><body>text</body></html>"</span>)
856 <span class="py-prompt">>>> </span>ElementTree.ElementTree(element).write(stdout())
857 <span class="py-output"><html><body>text</body></html></span></pre>
859 <p>## >>> sequence = ["<html><body>", "text</bo", "dy></html>"]
860 ## >>> element = ElementTree.fromstringlist(sequence)
861 ## >>> ElementTree.ElementTree(element).write(stdout())
862 ## <html><body>text</body></html></p>
864 <pre class="py-doctest">
865 <span class="py-prompt">>>> </span><span class="py-keyword">print</span>(repr(ElementTree.tostring(element)).lstrip(<span class="py-string">'b'</span>))
866 <span class="py-output">'<html><body>text</body></html>'</span></pre>
868 <p># looks different in lxml
869 # >>> print(ElementTree.tostring(element, "ascii"))
870 # <?xml version='1.0' encoding='ascii'?>
871 # <html><body>text</body></html></p>
873 <pre class="py-doctest">
874 <span class="py-prompt">>>> </span>_, ids = ElementTree.XMLID(<span class="py-string">"<html><body>text</body></html>"</span>)
875 <span class="py-prompt">>>> </span>len(ids)
876 <span class="py-output">0</span>
877 <span class="py-output"></span><span class="py-prompt">>>> </span>_, ids = ElementTree.XMLID(<span class="py-string">"<html><body id='body'>text</body></html>"</span>)
878 <span class="py-prompt">>>> </span>len(ids)
879 <span class="py-output">1</span>
880 <span class="py-output"></span><span class="py-prompt">>>> </span>ids[<span class="py-string">"body"</span>].tag
881 <span class="py-output">'body'</span></pre>
887 <a name="namespace"></a>
889 <table class="details" border="1" cellpadding="3"
890 cellspacing="0" width="100%" bgcolor="white">
892 <table width="100%" cellpadding="0" cellspacing="0" border="0">
893 <tr valign="top"><td>
894 <h3 class="epydoc"><span class="sig"><span class="sig-name">namespace</span>()</span>
896 </td><td align="right" valign="top"
897 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#namespace">source code</a></span>
901 <p>Test namespace issues.</p>
902 <ol class="rst-arabic simple">
903 <li>xml namespace</li>
905 <pre class="py-doctest">
906 <span class="py-prompt">>>> </span>elem = ElementTree.XML(<span class="py-string">"<tag xml:lang='en' />"</span>)
907 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 1.1</span>
908 <span class="py-output">'<tag xml:lang="en"/>'</span></pre>
909 <ol class="rst-arabic simple" start="2">
910 <li>other "well-known" namespaces</li>
912 <pre class="py-doctest">
913 <span class="py-prompt">>>> </span>elem = ElementTree.XML(<span class="py-string">"<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' />"</span>)
914 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 2.1</span>
915 <span class="py-output">'<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"/>'</span></pre>
916 <pre class="py-doctest">
917 <span class="py-prompt">>>> </span>elem = ElementTree.XML(<span class="py-string">"<html:html xmlns:html='http://www.w3.org/1999/xhtml' />"</span>)
918 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 2.2</span>
919 <span class="py-output">'<html:html xmlns:html="http://www.w3.org/1999/xhtml"/>'</span></pre>
920 <pre class="py-doctest">
921 <span class="py-prompt">>>> </span>elem = ElementTree.XML(<span class="py-string">"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope' />"</span>)
922 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 2.3</span>
923 <span class="py-output">'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope"/>'</span></pre>
924 <ol class="rst-arabic simple" start="3">
925 <li>unknown namespaces</li>
933 <table class="details" border="1" cellpadding="3"
934 cellspacing="0" width="100%" bgcolor="white">
936 <table width="100%" cellpadding="0" cellspacing="0" border="0">
937 <tr valign="top"><td>
938 <h3 class="epydoc"><span class="sig"><span class="sig-name">qname</span>()</span>
940 </td><td align="right" valign="top"
941 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#qname">source code</a></span>
946 <p>Test QName handling.</p>
947 <ol class="rst-arabic simple">
948 <li>decorated tags</li>
950 <pre class="py-doctest">
951 <span class="py-prompt">>>> </span>elem = ElementTree.Element(<span class="py-string">"{uri}tag"</span>)
952 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 1.1</span>
953 <span class="py-output">'<ns0:tag xmlns:ns0="uri"/>'</span>
954 <span class="py-output"></span><span class="py-prompt">>>> </span>elem = ElementTree.Element(ElementTree.QName(<span class="py-string">"{uri}tag"</span>))
955 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 1.2</span>
956 <span class="py-output">'<ns0:tag xmlns:ns0="uri"/>'</span>
957 <span class="py-output"></span><span class="py-prompt">>>> </span>elem = ElementTree.Element(ElementTree.QName(<span class="py-string">"uri"</span>, <span class="py-string">"tag"</span>))
958 <span class="py-prompt">>>> </span>serialize(elem) <span class="py-comment"># 1.3</span>
959 <span class="py-output">'<ns0:tag xmlns:ns0="uri"/>'</span></pre>
961 <p># ns/attribute order ...</p>
962 <p>## 2) decorated attributes</p>
963 <p>## >>> elem.clear()
964 ## >>> elem.attrib["{uri}key"] = "value"
965 ## >>> serialize(elem) # 2.1
966 ## '<ns0:tag ns0:key="value" xmlns:ns0="uri"/>'</p>
967 <p>## >>> elem.clear()
968 ## >>> elem.attrib[ElementTree.QName("{uri}key")] = "value"
969 ## >>> serialize(elem) # 2.2
970 ## '<ns0:tag ns0:key="value" xmlns:ns0="uri"/>'</p>
971 <p>## 3) decorated values are not converted by default, but the
972 ## QName wrapper can be used for values</p>
973 <p>## >>> elem.clear()
974 ## >>> elem.attrib["{uri}key"] = "{uri}value"
975 ## >>> serialize(elem) # 3.1
976 ## '<ns0:tag ns0:key="{uri}value" xmlns:ns0="uri"/>'</p>
977 <p>## >>> elem.clear()
978 ## >>> elem.attrib["{uri}key"] = ElementTree.QName("{uri}value")
979 ## >>> serialize(elem) # 3.2
980 ## '<ns0:tag ns0:key="ns0:value" xmlns:ns0="uri"/>'</p>
981 <p>## >>> elem.clear()
982 ## >>> subelem = ElementTree.Element("tag")
983 ## >>> subelem.attrib["{uri1}key"] = ElementTree.QName("{uri2}value")
984 ## >>> elem.append(subelem)
985 ## >>> elem.append(subelem)
986 ## >>> serialize(elem) # 3.3
987 ## '<ns0:tag xmlns:ns0="uri"><tag ns1:key="ns2:value" xmlns:ns1="uri1" xmlns:ns2="uri2"/><tag ns1:key="ns2:value" xmlns:ns1="uri1" xmlns:ns2="uri2"/></ns0:tag>'</p>
992 <a name="xinclude"></a>
994 <table class="details" border="1" cellpadding="3"
995 cellspacing="0" width="100%" bgcolor="white">
997 <table width="100%" cellpadding="0" cellspacing="0" border="0">
998 <tr valign="top"><td>
999 <h3 class="epydoc"><span class="sig"><span class="sig-name">xinclude</span>()</span>
1001 </td><td align="right" valign="top"
1002 ><span class="codelink"><a href="lxml.tests.selftest-pysrc.html#xinclude">source code</a></span>
1007 <p>Basic inclusion example (XInclude C.1)</p>
1008 <pre class="py-doctest">
1009 <span class="py-prompt">>>> </span>document = xinclude_loader(<span class="py-string">"C1.xml"</span>)
1010 <span class="py-prompt">>>> </span>ElementInclude.include(document, xinclude_loader)
1011 <span class="py-prompt">>>> </span><span class="py-keyword">print</span>(serialize(document)) <span class="py-comment"># C1</span>
1012 <span class="py-output"><document></span>
1013 <span class="py-output"> <p>120 Mz is adequate for an average home user.</p></span>
1014 <span class="py-output"> <disclaimer></span>
1015 <span class="py-output"> <p>The opinions represented herein represent those of the individual</span>
1016 <span class="py-output"> and should not be interpreted as official policy endorsed by this</span>
1017 <span class="py-output"> organization.</p></span>
1018 <span class="py-output"></disclaimer></span>
1019 <span class="py-output"></document></span></pre>
1020 <p>Textual inclusion example (XInclude C.2)</p>
1021 <pre class="py-doctest">
1022 <span class="py-prompt">>>> </span>document = xinclude_loader(<span class="py-string">"C2.xml"</span>)
1023 <span class="py-prompt">>>> </span>ElementInclude.include(document, xinclude_loader)
1024 <span class="py-prompt">>>> </span><span class="py-keyword">print</span>(serialize(document)) <span class="py-comment"># C2</span>
1025 <span class="py-output"><document></span>
1026 <span class="py-output"> <p>This document has been accessed</span>
1027 <span class="py-output"> 324387 times.</p></span>
1028 <span class="py-output"></document></span></pre>
1029 <p>Textual inclusion of XML example (XInclude C.3)</p>
1030 <pre class="py-doctest">
1031 <span class="py-prompt">>>> </span>document = xinclude_loader(<span class="py-string">"C3.xml"</span>)
1032 <span class="py-prompt">>>> </span>ElementInclude.include(document, xinclude_loader)
1033 <span class="py-prompt">>>> </span><span class="py-keyword">print</span>(serialize(document)) <span class="py-comment"># C3</span>
1034 <span class="py-output"><document></span>
1035 <span class="py-output"> <p>The following is the source of the "data.xml" resource:</p></span>
1036 <span class="py-output"> <example>&lt;?xml version='1.0'?&gt;</span>
1037 <span class="py-output">&lt;data&gt;</span>
1038 <span class="py-output"> &lt;item&gt;&lt;![CDATA[Brooks &amp; Shields]]&gt;&lt;/item&gt;</span>
1039 <span class="py-output">&lt;/data&gt;</span>
1040 <span class="py-output"></example></span>
1041 <span class="py-output"></document></span></pre>
1043 <p>## Fallback example (XInclude C.5)
1044 ## Note! Fallback support is not yet implemented</p>
1045 <p>## >>> document = xinclude_loader("C5.xml")
1046 ## >>> ElementInclude.include(document, xinclude_loader)
1047 ## Traceback (most recent call last):
1048 ## IOError: resource not found
1049 ## >>> # print(serialize(document)) # C5</p>
1055 <!-- ==================== VARIABLES DETAILS ==================== -->
1056 <a name="section-VariablesDetails"></a>
1057 <table class="details" border="1" cellpadding="3"
1058 cellspacing="0" width="100%" bgcolor="white">
1059 <tr bgcolor="#70b0f0" class="table-header">
1060 <td colspan="2" class="table-header">
1061 <table border="0" cellpadding="0" cellspacing="0" width="100%">
1063 <td align="left"><span class="table-header">Variables Details</span></td>
1064 <td align="right" valign="top"
1065 ><span class="options">[<a href="#section-VariablesDetails"
1066 class="privatelink" onclick="toggle_private();"
1067 >hide private</a>]</span></td>
1073 <a name="SAMPLE_XML"></a>
1075 <table class="details" border="1" cellpadding="3"
1076 cellspacing="0" width="100%" bgcolor="white">
1078 <h3 class="epydoc">SAMPLE_XML</h3>
1084 <dd><table><tr><td><pre class="variable">
1085 ElementTree.XML("""
1087 <tag class='a'>text</tag>
1088 <tag class='b' />
1090 <tag class='b' id='inner'>subtext</tag>
1093 <code class="variable-ellipsis">...</code>
1094 </pre></td></tr></table>
1099 <a name="ENTITY_XML"></a>
1101 <table class="details" border="1" cellpadding="3"
1102 cellspacing="0" width="100%" bgcolor="white">
1104 <h3 class="epydoc">ENTITY_XML</h3>
1110 <dd><table><tr><td><pre class="variable">
1111 <code class="variable-quote">'''</code><code class="variable-string"><!DOCTYPE points [</code>
1112 <code class="variable-string"><!ENTITY % user-entities SYSTEM \'user-entities.xml\'></code>
1113 <code class="variable-string">%user-entities;</code>
1114 <code class="variable-string">]></code>
1115 <code class="variable-string"><document>&entity;</document></code>
1116 <code class="variable-string"></code><code class="variable-quote">'''</code>
1117 </pre></td></tr></table>
1122 <a name="XINCLUDE"></a>
1124 <table class="details" border="1" cellpadding="3"
1125 cellspacing="0" width="100%" bgcolor="white">
1127 <h3 class="epydoc">XINCLUDE</h3>
1133 <dd><table><tr><td><pre class="variable">
1134 <code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">C1.xml</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'''</code><code class="variable-string"><?xml version=\'1.0\'?></code>
1135 <code class="variable-string"><document xmlns:xi="http://www.w3.org/2001/XInclude"></code>
1136 <code class="variable-string"> <p>120 Mz is adequate for an average home user.</p></code>
1137 <code class="variable-string"> <xi:include href="disclaimer.xml"/></code>
1138 <code class="variable-string"></document></code>
1139 <code class="variable-string"></code><code class="variable-quote">'''</code><code class="variable-op">,</code>
1140 <code class="variable-quote">'</code><code class="variable-string">C2.xml</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">'''</code><code class="variable-string"><?xml version=\'1.0\'?></code>
1141 <code class="variable-string"><document xmlns:xi="http://www.w3.org/2001/XInclude"></code>
1142 <code class="variable-ellipsis">...</code>
1143 </pre></td></tr></table>
1149 <!-- ==================== NAVIGATION BAR ==================== -->
1150 <table class="navbar" border="0" width="100%" cellpadding="0"
1151 bgcolor="#a0c0ff" cellspacing="0">
1152 <tr valign="middle">
1154 <th> <a
1155 href="lxml-module.html">Home</a> </th>
1158 <th> <a
1159 href="module-tree.html">Trees</a> </th>
1162 <th> <a
1163 href="identifier-index.html">Indices</a> </th>
1166 <th> <a
1167 href="help.html">Help</a> </th>
1169 <!-- Project homepage -->
1170 <th class="navbar" align="right" width="100%">
1171 <table border="0" cellpadding="0" cellspacing="0">
1172 <tr><th class="navbar" align="center"
1173 ><a class="navbar" target="_top" href="/">lxml API</a></th>
1177 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
1179 <td align="left" class="footer">
1180 Generated by Epydoc 3.0.1
1181 on Wed Jan 29 12:26:21 2020
1183 <td align="right" class="footer">
1184 <a target="mainFrame" href="http://epydoc.sourceforge.net"
1185 >http://epydoc.sourceforge.net</a>
1190 <script type="text/javascript">
1192 // Private objects are initially displayed (because if
1193 // javascript is turned off then we want them to be
1194 // visible); but by default, we want to hide them. So hide
1195 // them unless we have a cookie that says to show them.