lxml changelog
==============
+3.1.2 (2013-04-12)
+==================
+
+Features added
+--------------
+
+Bugs fixed
+----------
+
+* LP#1136509: Passing attributes through the namespace-unaware API of
+ the sax bridge (i.e. the ``handler.startElement()`` method) failed
+ with a ``TypeError``. Patch by Mike Bayer.
+
+* LP#1123074: Fix serialisation error in XSLT output when converting
+ the result tree to a Unicode string.
+
+* GH#105: Replace illegal usage of ``xmlBufLength()`` in libxml2 2.9.0
+ by properly exported API function ``xmlBufUse()``.
+
+Other changes
+-------------
+
+
3.1.1 (2013-03-29)
==================
Installation
------------
-Unless you are on MS Windows, the best way to install lxml is to
-get the pip_ package management tool and run the following as
-super-user (or administrator)::
+The best way to install lxml is to get the pip_ package management
+tool and run the following as super-user (or administrator)::
pip install lxml
manually and let pip install that, or pass the desired version
to pip::
- pip install lxml==2.3
+ pip install lxml==3.1.2
.. _pip: http://pypi.python.org/pypi/pip
-* For **MS Windows**, we no longer provide binary distributions. Also
- see the related `FAQ entry <FAQ.html#where-are-the-binary-builds>`_.
+* For **MS Windows**, recent lxml releases feature community donated
+ binary distributions, although you might still want to take a look
+ at the related `FAQ entry <FAQ.html#where-are-the-binary-builds>`_.
If you fail to build lxml on your MS Windows system from the signed
- and tested sources that we release, consider using the `unofficial
- Windows binaries <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_
+ and tested sources that we release, consider using the binary builds
+ from PyPI or the `unofficial Windows binaries
+ <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_
that Christoph Gohlke generously provides.
* On **Linux** (and most other well-behaved operating systems),
Metadata-Version: 1.1
Name: lxml
-Version: 3.1.1
+Version: 3.1.2
Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
Home-page: http://lxml.de/
Author: lxml dev team
Author-email: lxml-dev@lxml.de
License: UNKNOWN
-Download-URL: http://pypi.python.org/packages/source/l/lxml/lxml-3.1.1.tar.gz
+Download-URL: http://pypi.python.org/packages/source/l/lxml/lxml-3.1.2.tar.gz
Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
provides safe and convenient access to these libraries using the ElementTree
API.
as soon as a maintenance branch has been established. Note that this
requires Cython to be installed at an appropriate version for the build.
- 3.1.1 (2013-03-29)
+ 3.1.2 (2013-04-12)
==================
Features added
Bugs fixed
----------
- * LP#1160386: Write access to ``lxml.html.FormElement.fields`` raised
- an AttributeError in Py3.
+ * LP#1136509: Passing attributes through the namespace-unaware API of
+ the sax bridge (i.e. the ``handler.startElement()`` method) failed
+ with a ``TypeError``. Patch by Mike Bayer.
- * Illegal memory access during cleanup in incremental xmlfile writer.
+ * LP#1123074: Fix serialisation error in XSLT output when converting
+ the result tree to a Unicode string.
+
+ * GH#105: Replace illegal usage of ``xmlBufLength()`` in libxml2 2.9.0
+ by properly exported API function ``xmlBufUse()``.
Other changes
-------------
- * The externally useless class ``lxml.etree._BaseParser`` was removed
- from the module dict.
-
Platform: UNKNOWN
import sys, copy
from itertools import *
-from StringIO import StringIO
import benchbase
from benchbase import (with_attributes, with_text, onlylib,
- serialized, children, nochange)
+ serialized, children, nochange, BytesIO)
TEXT = "some ASCII text"
UTEXT = u"some klingon: \F8D2"
@nochange
def bench_middle_child(self, root):
- pos = len(root) / 2
+ pos = len(root) // 2
for i in self.repeat1000:
child = root[pos]
@nochange
@with_attributes(False)
@with_text(text=True)
- @onlylib('lxe', 'ET')
def bench_tostring_text_ascii(self, root):
self.etree.tostring(root, method="text")
@nochange
@with_attributes(False)
@with_text(text=True, utext=True)
- @onlylib('lxe')
def bench_tostring_text_unicode(self, root):
- self.etree.tostring(root, method="text", encoding=unicode)
+ self.etree.tostring(root, method="text", encoding='unicode')
@nochange
@with_attributes(False)
@with_text(text=True, utext=True)
- @onlylib('lxe', 'ET')
def bench_tostring_text_utf16(self, root):
self.etree.tostring(root, method="text", encoding='UTF-16')
@with_attributes(True, False)
@with_text(text=True, utext=True)
def bench_tostring_utf8_unicode_XML(self, root):
- xml = unicode(self.etree.tostring(root, encoding='UTF-8'), 'UTF-8')
+ xml = self.etree.tostring(root, encoding='UTF-8').decode('UTF-8')
self.etree.XML(xml)
@nochange
@with_attributes(True, False)
@with_text(text=True, utext=True)
- def bench_write_utf8_parse_stringIO(self, root):
- f = StringIO()
+ def bench_write_utf8_parse_bytesIO(self, root):
+ f = BytesIO()
self.etree.ElementTree(root).write(f, encoding='UTF-8')
f.seek(0)
self.etree.parse(f)
@with_attributes(True, False)
@with_text(text=True, utext=True)
@serialized
- def bench_parse_stringIO(self, root_xml):
- f = StringIO(root_xml)
+ def bench_parse_bytesIO(self, root_xml):
+ f = BytesIO(root_xml)
self.etree.parse(f)
@with_attributes(True, False)
@with_attributes(True, False)
@with_text(text=True, utext=True)
@serialized
- def bench_iterparse_stringIO(self, root_xml):
- f = StringIO(root_xml)
+ def bench_iterparse_bytesIO(self, root_xml):
+ f = BytesIO(root_xml)
for event, element in self.etree.iterparse(f):
pass
@with_attributes(True, False)
@with_text(text=True, utext=True)
@serialized
- def bench_iterparse_stringIO_clear(self, root_xml):
- f = StringIO(root_xml)
+ def bench_iterparse_bytesIO_clear(self, root_xml):
+ f = BytesIO(root_xml)
for event, element in self.etree.iterparse(f):
element.clear()
root1.append(el)
def bench_insert_from_document(self, root1, root2):
- pos = len(root1)/2
+ pos = len(root1)//2
for el in root2:
root1.insert(pos, el)
pos = pos + 1
root.append(el)
def bench_reorder(self, root):
- for i in range(1,len(root)/2):
+ for i in range(1,len(root)//2):
el = root[0]
del root[0]
root[-i:-i] = [ el ]
def bench_reorder_slice(self, root):
- for i in range(1,len(root)/2):
+ for i in range(1,len(root)//2):
els = root[0:1]
del root[0]
root[-i:-i] = els
root.index(child, start=-100, stop=-5)
@nochange
- def bench_getiterator_all(self, root):
- list(root.getiterator())
+ def bench_iter_all(self, root):
+ list(root.iter())
+
+ @nochange
+ def bench_iter_one_at_a_time(self, root):
+ list(islice(root.iter(), 2**30, None))
@nochange
- def bench_getiterator_islice(self, root):
- list(islice(root.getiterator(), 10, 110))
+ def bench_iter_islice(self, root):
+ list(islice(root.iter(), 10, 110))
@nochange
- def bench_getiterator_tag(self, root):
- list(islice(root.getiterator(self.SEARCH_TAG), 3, 10))
+ def bench_iter_tag(self, root):
+ list(islice(root.iter(self.SEARCH_TAG), 3, 10))
@nochange
- def bench_getiterator_tag_all(self, root):
- list(root.getiterator(self.SEARCH_TAG))
+ def bench_iter_tag_all(self, root):
+ list(root.iter(self.SEARCH_TAG))
@nochange
- def bench_getiterator_tag_none(self, root):
- list(root.getiterator("{ThisShould}NeverExist"))
+ def bench_iter_tag_one_at_a_time(self, root):
+ list(islice(root.iter(self.SEARCH_TAG), 2**30, None))
@nochange
- def bench_getiterator_tag_text(self, root):
- [ e.text for e in root.getiterator(self.SEARCH_TAG) ]
+ def bench_iter_tag_none(self, root):
+ list(root.iter("{ThisShould}NeverExist"))
+
+ @nochange
+ def bench_iter_tag_text(self, root):
+ [ e.text for e in root.iter(self.SEARCH_TAG) ]
@nochange
def bench_findall(self, root):
namespaces = {'p':ns})
@nochange
- @onlylib('lxe')
def bench_iterfind(self, root):
list(root.iterfind(".//*"))
@nochange
- @onlylib('lxe')
def bench_iterfind_tag(self, root):
list(root.iterfind(".//" + self.SEARCH_TAG))
@nochange
- @onlylib('lxe')
def bench_iterfind_islice(self, root):
list(islice(root.iterfind(".//*"), 10, 110))
+ _bench_xpath_single_xpath = None
+
+ @nochange
+ @onlylib('lxe')
+ def bench_xpath_single(self, root):
+ xpath = self._bench_xpath_single_xpath
+ if xpath is None:
+ ns, tag = self.SEARCH_TAG[1:].split('}')
+ xpath = self._bench_xpath_single_xpath = self.etree.XPath(
+ './/p:%s[1]' % tag, namespaces={'p': ns})
+ xpath(root)
+
+ @nochange
+ def bench_find_single(self, root):
+ root.find(".//%s" % self.SEARCH_TAG)
+
+ @nochange
+ def bench_iter_single(self, root):
+ next(root.iter(self.SEARCH_TAG))
+
+ _bench_xpath_two_xpath = None
+
+ @nochange
+ @onlylib('lxe')
+ def bench_xpath_two(self, root):
+ xpath = self._bench_xpath_two_xpath
+ if xpath is None:
+ ns, tag = self.SEARCH_TAG[1:].split('}')
+ xpath = self._bench_xpath_two_xpath = self.etree.XPath(
+ './/p:%s[position() < 3]' % tag, namespaces={'p': ns})
+ xpath(root)
+
+ @nochange
+ def bench_iterfind_two(self, root):
+ it = root.iterfind(".//%s" % self.SEARCH_TAG)
+ next(it)
+ next(it)
+
+ @nochange
+ def bench_iter_two(self, root):
+ it = root.iter(self.SEARCH_TAG)
+ next(it)
+ next(it)
+
+
if __name__ == '__main__':
benchbase.main(BenchMark)
@onlylib('lxe')
@children
def bench_xpath_class(self, children):
- xpath = self.etree.XPath("./*[0]")
+ xpath = self.etree.XPath("./*[1]")
for child in children:
xpath(child)
@children
def bench_xpath_class_repeat(self, children):
for child in children:
- xpath = self.etree.XPath("./*[0]")
+ xpath = self.etree.XPath("./*[1]")
xpath(child)
@nochange
def bench_xpath_element(self, root):
xpath = self.etree.XPathElementEvaluator(root)
for child in root:
- xpath.evaluate("./*[0]")
+ xpath.evaluate("./*[1]")
@nochange
@onlylib('lxe')
@children
def bench_xpath_method(self, children):
for child in children:
- child.xpath("./*[0]")
+ child.xpath("./*[1]")
@nochange
@onlylib('lxe')
else:
return ()
extensions = {("test", "child") : return_child}
- xpath = self.etree.XPath("t:child(.)", namespaces={"test":"t"},
+ xpath = self.etree.XPath("t:child(.)", namespaces={"t":"test"},
extensions=extensions)
for child in children:
xpath(child)
import sys, re, string, time, copy, gc
from itertools import *
-from StringIO import StringIO
import time
+try:
+ from io import BytesIO
+except ImportError:
+ from StringIO import StringIO as BytesIO
+
+try:
+ izip
+except NameError:
+ izip = zip # Py3
+
+def exec_(code, glob):
+ if sys.version_info[0] >= 3:
+ exec(code, glob)
+ else:
+ exec("exec code in glob")
+
TREE_FACTOR = 1 # increase tree size with '-l / '-L' cmd option
"Element" : self.etree.Element,
"SubElement" : self.etree.SubElement
}
+
# create function object
- exec "\n".join(output) in namespace
+ exec_("\n".join(output), namespace)
return namespace["element_factory"]
def _all_trees(self):
root = self.etree.Element('{abc}rootnode')
children = [root]
for i in range(6 + TREE_FACTOR):
- tag_no = count().next
children = [ SubElement(c, "{cdefg}a%05d" % (i%8), attributes)
for i,c in enumerate(chain(children, children, children)) ]
for child in children:
current_time = time.time
t = current_time()
root = self.etree.Element('{abc}rootnode')
- children = [root]
for ch1 in self.atoz:
el = SubElement(root, "{abc}"+ch1*5, attributes)
el.text = text
else:
tree_sets = ()
if tree_sets:
- tree_tuples = [ map(int, tree_set.split(','))
- for tree_set in tree_sets ]
+ tree_tuples = [list(map(int, tree_set.split(',')))
+ for tree_set in tree_sets]
else:
try:
- function = getattr(method, 'im_func', method)
arg_count = method.func_code.co_argcount - 1
except AttributeError:
- arg_count = 1
+ try:
+ arg_count = method.__code__.co_argcount - 1
+ except AttributeError:
+ arg_count = 1
tree_tuples = self._permutations(all_trees, arg_count)
serialized = getattr(method, 'STRING', False)
############################################################
def buildSuites(benchmark_class, etrees, selected):
- benchmark_suites = map(benchmark_class, etrees)
+ benchmark_suites = list(map(benchmark_class, etrees))
# sorted by name and tree tuple
benchmarks = [ sorted(b.benchmarks()) for b in benchmark_suites ]
attr = {0:'-', 1:'A'}[an]
ser = {True:'X', False:'T'}[serialized]
chd = {True:'C', False:'R'}[children]
- return "%s%s%s%s T%s" % (text, attr, ser, chd, ',T'.join(imap(str, trees))[:6])
+ return "%s%s%s%s T%s" % (text, attr, ser, chd, ',T'.join(map(str, trees))[:6])
def printSetupTimes(benchmark_suites):
- print "Setup times for trees in seconds:"
+ print("Setup times for trees in seconds:")
for b in benchmark_suites:
- print "%-3s: " % b.lib_name,
+ sys.stdout.write("%-3s: " % b.lib_name)
for an in (0,1):
for tn in (0,1,2):
- print ' %s ' % build_treeset_name((), tn, an, False, False)[:2],
- print
+ sys.stdout.write(' %s ' %
+ build_treeset_name((), tn, an, False, False)[:2])
+ print('')
for i, tree_times in enumerate(b.setup_times):
- print " T%d:" % (i+1), ' '.join("%6.4f" % t for t in tree_times)
- print
+ print(" T%d: %s" % (i+1, ' '.join("%6.4f" % t for t in tree_times)))
+ print('')
def runBench(suite, method_name, method_call, tree_set, tn, an,
serial, children, no_change):
gc.collect()
return times
+
def runBenchmarks(benchmark_suites, benchmarks):
for bench_calls in izip(*benchmarks):
for lib, (bench, benchmark_setup) in enumerate(izip(benchmark_suites, bench_calls)):
bench_name = benchmark_setup[0]
tree_set_name = build_treeset_name(*benchmark_setup[-6:-1])
- print "%-3s: %-28s" % (bench.lib_name, bench_name[6:34]),
- print "(%-10s)" % tree_set_name,
+ sys.stdout.write("%-3s: %-28s (%-10s) " % (
+ bench.lib_name, bench_name[6:34], tree_set_name))
sys.stdout.flush()
try:
result = runBench(bench, *benchmark_setup)
except SkippedTest:
- print "skipped"
+ print("skipped")
except KeyboardInterrupt:
- print "interrupted by user"
+ print("interrupted by user")
sys.exit(1)
- except Exception, e:
- print "failed: %s: %s" % (e.__class__.__name__, e)
+ except Exception:
+ exc_type, exc_value = sys.exc_info()[:2]
+ print("failed: %s: %s" % (exc_type.__name__, exc_value))
+ exc_type = exc_value = None
else:
- print "%9.4f msec/pass, best of (" % min(result),
- for t in result:
- print "%9.4f" % t,
- print ")"
+ print("%9.4f msec/pass, best of (%s)" % (
+ min(result), ' '.join("%9.4f" % t for t in result)))
if len(benchmark_suites) > 1:
- print # empty line between different benchmarks
+ print('') # empty line between different benchmarks
############################################################
# Main program
pass
if not _etrees:
- print "No library to test. Exiting."
+ print("No library to test. Exiting.")
sys.exit(1)
- print "Preparing test suites and trees ..."
+ print("Preparing test suites and trees ...")
selected = set( sys.argv[1:] )
benchmark_suites, benchmarks = \
buildSuites(benchmark_class, _etrees, selected)
- print "Running benchmark on", ', '.join(b.lib_name
- for b in benchmark_suites)
- print
+ print("Running benchmark on", ', '.join(b.lib_name
+ for b in benchmark_suites))
+ print('')
printSetupTimes(benchmark_suites)
non-trivial for its users to build lxml: the lack of a pre-installed
standard compiler and the missing package management.
-We previously provided Windows binaries through PyPI, but no
-longer do so due to the high maintenance overhead they introduce and
-the difficulty in supporting different system configurations.
-Christoph Gohlke generously provides `unofficial lxml binary builds
-for Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_ that
-are usually very up to date. Consider using them if you prefer a
+For recent lxml releases, PyPI provides community donated Windows binaries.
+Besides that, Christoph Gohlke generously provides `unofficial lxml binary
+builds for Windows <http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml>`_
+that are usually very up to date. Consider using them if you prefer a
binary build over a signed official source release.
Why do I get errors about missing UCS4 symbols when installing lxml?
--------------------------------------------------------------------
-Most likely, you use a Python installation that was configured for internal
-use of UCS2 unicode, meaning 16-bit unicode. The lxml egg distributions are
-generally compiled on platforms that use UCS4, a 32-bit unicode encoding, as
-this is used on the majority of platforms. Sadly, both are not compatible, so
-the eggs can only support the one they were compiled with.
+You are using a Python installation that was configured for a different
+internal Unicode representation than the lxml package you are trying to
+install. CPython versions before 3.3 allowed to switch between two types
+at build time: the 32 bit encoding UCS4 and the 16 bit encoding UCS2.
+Sadly, both are not compatible, so eggs and other binary distributions
+can only support the one they were compiled with.
This means that you have to compile lxml from sources for your system. Note
that you do not need Cython for this, the lxml source distribution is directly
However, to avoid writing plain C-code and caring too much about the
details of built-in types and reference counting, lxml is written in
-Cython_, a Python-like language that is translated into C-code.
+Cython_, a superset of the Python language that translates to C-code.
Chances are that if you know Python, you can write `code that Cython
accepts`_. Again, the C-ish style used in the lxml code is just for
performance optimisations. If you want to contribute, don't bother
better than none. And keep in mind that lxml's flexible API often
favours an implementation of features in pure Python, without
bothering with C-code at all. For example, the ``lxml.html`` package
-is entirely written in Python.
+is written entirely in Python.
Please contact the `mailing list`_ if you need any help.
-----------------------------------------------------
First, you should look at the `current developer changelog`_ to see if this
-is a known problem that has already been fixed in the SVN trunk since the
+is a known problem that has already been fixed in the master branch since the
release you are using.
.. _`current developer changelog`: https://github.com/lxml/lxml/blob/master/CHANGES.txt
work-around. See the next question for some hints on how to do that.
Otherwise, we would really like to hear about it. Please report it to
-the `mailing list`_ so that we can fix it. It is very helpful in this
-case if you can come up with a short code snippet that demonstrates
-your problem. If others can reproduce and see the problem, it is much
-easier for them to fix it - and maybe even easier for you to describe
-it and get people convinced that it really is a problem to fix.
+the `bug tracker`_ or to the `mailing list`_ so that we can fix it.
+It is very helpful in this case if you can come up with a short code
+snippet that demonstrates your problem. If others can reproduce and
+see the problem, it is much easier for them to fix it - and maybe even
+easier for you to describe it and get people convinced that it really
+is a problem to fix.
It is important that you always report the version of lxml, libxml2
and libxslt that you get from the code snippet above. If we do not
Since as a user of lxml you are likely a programmer, you might find
`this article on bug reports`_ an interesting read.
+.. _`bug tracker`: https://bugs.launchpad.net/lxml/
.. _`mailing list`: http://lxml.de/mailinglist/
.. _`this article on bug reports`: http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
pip install "Cython>=0.18"
-lxml currently requires Cython 0.17.3, later release versions should
-work as well.
+lxml currently requires at least Cython 0.18, later release versions
+should work as well.
Github, git and hg
</head>
<body>
<div class="document" id="lxml-faq-frequently-asked-questions">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu current" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml FAQ - Frequently Asked Questions</h1>
<p>Frequently asked questions on lxml. See also the notes on <a class="reference external" href="compatibility.html">compatibility</a> to
<a class="reference external" href="http://effbot.org/zone/element-index.htm">ElementTree</a>.</p>
Two of the major design issues of this operating system make it
non-trivial for its users to build lxml: the lack of a pre-installed
standard compiler and the missing package management.</p>
-<p>We previously provided Windows binaries through PyPI, but no
-longer do so due to the high maintenance overhead they introduce and
-the difficulty in supporting different system configurations.
-Christoph Gohlke generously provides <a class="reference external" href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml">unofficial lxml binary builds
-for Windows</a> that
-are usually very up to date. Consider using them if you prefer a
+<p>For recent lxml releases, PyPI provides community donated Windows binaries.
+Besides that, Christoph Gohlke generously provides <a class="reference external" href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml">unofficial lxml binary
+builds for Windows</a>
+that are usually very up to date. Consider using them if you prefer a
binary build over a signed official source release.</p>
</div>
<div class="section" id="why-do-i-get-errors-about-missing-ucs4-symbols-when-installing-lxml">
<h2>Why do I get errors about missing UCS4 symbols when installing lxml?</h2>
-<p>Most likely, you use a Python installation that was configured for internal
-use of UCS2 unicode, meaning 16-bit unicode. The lxml egg distributions are
-generally compiled on platforms that use UCS4, a 32-bit unicode encoding, as
-this is used on the majority of platforms. Sadly, both are not compatible, so
-the eggs can only support the one they were compiled with.</p>
+<p>You are using a Python installation that was configured for a different
+internal Unicode representation than the lxml package you are trying to
+install. CPython versions before 3.3 allowed to switch between two types
+at build time: the 32 bit encoding UCS4 and the 16 bit encoding UCS2.
+Sadly, both are not compatible, so eggs and other binary distributions
+can only support the one they were compiled with.</p>
<p>This means that you have to compile lxml from sources for your system. Note
that you do not need Cython for this, the lxml source distribution is directly
compilable on both platform types. See the <a class="reference external" href="build.html">build instructions</a> on how to do
required for performance reasons.</p>
<p>However, to avoid writing plain C-code and caring too much about the
details of built-in types and reference counting, lxml is written in
-<a class="reference external" href="http://www.cython.org/">Cython</a>, a Python-like language that is translated into C-code.
+<a class="reference external" href="http://www.cython.org/">Cython</a>, a superset of the Python language that translates to C-code.
Chances are that if you know Python, you can write <a class="reference external" href="http://docs.cython.org/docs/tutorial.html">code that Cython
accepts</a>. Again, the C-ish style used in the lxml code is just for
performance optimisations. If you want to contribute, don't bother
better than none. And keep in mind that lxml's flexible API often
favours an implementation of features in pure Python, without
bothering with C-code at all. For example, the <tt class="docutils literal">lxml.html</tt> package
-is entirely written in Python.</p>
+is written entirely in Python.</p>
<p>Please contact the <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a> if you need any help.</p>
</div>
<div class="section" id="how-can-i-contribute">
<div class="section" id="i-think-i-have-found-a-bug-in-lxml-what-should-i-do">
<h2>I think I have found a bug in lxml. What should I do?</h2>
<p>First, you should look at the <a class="reference external" href="https://github.com/lxml/lxml/blob/master/CHANGES.txt">current developer changelog</a> to see if this
-is a known problem that has already been fixed in the SVN trunk since the
+is a known problem that has already been fixed in the master branch since the
release you are using.</p>
<p>Also, the 'crash' section above has a few good advices what to try to see if
the problem is really in lxml - and not in your setup. Believe it or not,
mailing lists, which may considerably reduce the time to find a fix or
work-around. See the next question for some hints on how to do that.</p>
<p>Otherwise, we would really like to hear about it. Please report it to
-the <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a> so that we can fix it. It is very helpful in this
-case if you can come up with a short code snippet that demonstrates
-your problem. If others can reproduce and see the problem, it is much
-easier for them to fix it - and maybe even easier for you to describe
-it and get people convinced that it really is a problem to fix.</p>
+the <a class="reference external" href="https://bugs.launchpad.net/lxml/">bug tracker</a> or to the <a class="reference external" href="http://lxml.de/mailinglist/">mailing list</a> so that we can fix it.
+It is very helpful in this case if you can come up with a short code
+snippet that demonstrates your problem. If others can reproduce and
+see the problem, it is much easier for them to fix it - and maybe even
+easier for you to describe it and get people convinced that it really
+is a problem to fix.</p>
<p>It is important that you always report the version of lxml, libxml2
and libxslt that you get from the code snippet above. If we do not
know the library versions you are using, we will ask back, so it will
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="apis-specific-to-lxml-etree">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">APIs specific to lxml.etree</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu current" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">APIs specific to lxml.etree</h1>
<p>lxml.etree tries to follow established APIs wherever possible. Sometimes,
however, the need to expose a feature in an easy way led to the invention of a
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
lxml.tests.test_relaxng.ETreeRelaxNGTestCase.test_relaxng_error lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error
lxml.tests.common_imports.HelperTestCase.assertFalse lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
lxml.tests.test_sax.ETreeSaxTestCase lxml.tests.test_sax.ETreeSaxTestCase-class.html
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_no_ns_attributes lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns_attributes
lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi
lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_simple lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple
lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_redefine_ns lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns
lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_pi_root lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root
lxml.tests.test_sax.ETreeSaxTestCase.test_element_sax lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax
lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_double lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double
+lxml.tests.test_sax.ETreeSaxTestCase.test_etree_sax_ns_attributes lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns_attributes
lxml.tests.common_imports.HelperTestCase.assertFalse lxml.tests.common_imports.HelperTestCase-class.html#assertFalse
lxml.tests.test_schematron.ETreeSchematronTestCase lxml.tests.test_schematron.ETreeSchematronTestCase-class.html
lxml.tests.common_imports.HelperTestCase.tearDown lxml.tests.common_imports.HelperTestCase-class.html#tearDown
lxml.tests.common_imports.HelperTestCase.tearDown lxml.tests.common_imports.HelperTestCase-class.html#tearDown
lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_input_none lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_none
lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get
+lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_unicode_standalone lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode_standalone
lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_parameter_xpath_object lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object
lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_pi_get_unknown lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown
lxml.tests.test_xslt.ETreeXSLTTestCase.test_xslt_multiple_transforms lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms
Iterates over an element and its sub-elements in document order (depth
first pre-order).</em>
</li>
- <li> <strong class="uidlink"><a href="lxml.builder.ElementMaker-class.html">lxml.builder.ElementMaker</a></strong>:
- <em class="summary">Element generator factory.</em>
- </li>
<li> <strong class="uidlink"><a href="lxml.objectify.ElementMaker-class.html">lxml.objectify.ElementMaker</a></strong>:
<em class="summary">ElementMaker(self, namespace=None, nsmap=None, annotate=True, makeelement=None)</em>
</li>
+ <li> <strong class="uidlink"><a href="lxml.builder.ElementMaker-class.html">lxml.builder.ElementMaker</a></strong>:
+ <em class="summary">Element generator factory.</em>
+ </li>
<li> <strong class="uidlink"><a href="lxml.etree.ElementTextIterator-class.html" onclick="show_private();">lxml.etree.ElementTextIterator</a></strong>:
<em class="summary">ElementTextIterator(self, element, tag=None, with_tail=True)
Iterates over the text content of a subtree.</em>
<li> <strong class="uidlink"><a href="lxml.objectify.PyType-class.html">lxml.objectify.PyType</a></strong>:
<em class="summary">PyType(self, name, type_check, type_class, stringify=None)
User defined type.</em>
+ </li>
+ <li> <strong class="uidlink"><a href="xml.etree.ElementTree.QName-class.html">xml.etree.ElementTree.QName</a></strong>
</li>
<li> <strong class="uidlink"><a href="lxml.etree.QName-class.html">lxml.etree.QName</a></strong>:
<em class="summary">QName(text_or_uri_or_element, tag=None)</em>
</li>
- <li> <strong class="uidlink"><a href="xml.etree.ElementTree.QName-class.html">xml.etree.ElementTree.QName</a></strong>
- </li>
<li> <strong class="uidlink"><a href="lxml.etree.RelaxNGErrorTypes-class.html">lxml.etree.RelaxNGErrorTypes</a></strong>:
<em class="summary">Libxml2 RelaxNG error types</em>
</li>
<em class="summary">RelaxNG(self, etree=None, file=None)
Turn a document into a Relax NG validator.</em>
</li>
- <li> <strong class="uidlink"><a href="lxml.isoschematron.Schematron-class.html">lxml.isoschematron.Schematron</a></strong>:
- <em class="summary">An ISO Schematron validator.</em>
- </li>
<li> <strong class="uidlink"><a href="lxml.etree.Schematron-class.html">lxml.etree.Schematron</a></strong>:
<em class="summary">Schematron(self, etree=None, file=None)
A Schematron validator.</em>
</li>
+ <li> <strong class="uidlink"><a href="lxml.isoschematron.Schematron-class.html">lxml.isoschematron.Schematron</a></strong>:
+ <em class="summary">An ISO Schematron validator.</em>
+ </li>
<li> <strong class="uidlink"><a href="lxml.etree.XMLSchema-class.html">lxml.etree.XMLSchema</a></strong>:
<em class="summary">XMLSchema(self, etree=None, file=None)
Turn a document into an XML Schema validator.</em>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<tr>
<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TABLE">TABLE</a><br />
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_with_text">test_getiterator_filter_with_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_pi">test_getiterator_filter_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative2">test_setslice_negative2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.html.defs-module.html#table_tags">table_tags</a><br />
<span class="index-where">(in <a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_with_text">test_getiterator_with_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_with_text">test_getiterator_filter_with_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial">test_setslice_partial()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._Comment-class.html#tag">tag</a><br />
<span class="index-where">(in <a href="lxml.etree._Comment-class.html" onclick="show_private();">_Comment</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getnext">test_getnext()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_with_text">test_getiterator_with_text()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_allneg">test_setslice_partial_allneg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#tag">tag</a><br />
<span class="index-where">(in <a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getparent">test_getparent()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getnext">test_getnext()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_neg">test_setslice_partial_neg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._Entity-class.html#tag">tag</a><br />
<span class="index-where">(in <a href="lxml.etree._Entity-class.html" onclick="show_private();">_Entity</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getprevious">test_getprevious()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getparent">test_getparent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_wrong_length">test_setslice_partial_wrong_length()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._ProcessingInstruction-class.html#tag">tag</a><br />
<span class="index-where">(in <a href="lxml.etree._ProcessingInstruction-class.html" onclick="show_private();">_ProcessingInstruction</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getroottree">test_getroottree()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getprevious">test_getprevious()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_single">test_setslice_single()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#tag">tag</a><br />
<span class="index-where">(in <a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice">test_getslice()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getroottree">test_getroottree()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step">test_setslice_step()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#tag">tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_complete">test_getslice_complete()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice">test_getslice()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative">test_setslice_step_negative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare">tag_compare()</a><br />
<span class="index-where">(in <a href="lxml.doctestcompare.LXMLOutputChecker-class.html">LXMLOutputChecker</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_complete">test_getslice_complete()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative2">test_setslice_step_negative2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#tag_or_value">tag_or_value()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial">test_getslice_partial()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_overrun">test_setslice_step_overrun()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.html.diff.tag_token-class.html">tag_token</a><br />
<span class="index-where">(in <a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial_neg">test_getslice_partial_neg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial">test_getslice_partial()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_tail">test_setslice_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.html.defs-module.html#tags">tags</a><br />
<span class="index-where">(in <a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_step">test_getslice_step()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial_neg">test_getslice_partial_neg()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy">test_shallowcopy()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#tail">tail</a><br />
<span class="index-where">(in <a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_text">test_getslice_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_step">test_getslice_step()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy_elementtree">test_shallowcopy_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#tail">tail</a><br />
<span class="index-where">(in <a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base">test_html_base()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_text">test_getslice_text()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_simple">test_simple()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.etree._ProcessingInstruction-class.html#target">target</a><br />
<span class="index-where">(in <a href="lxml.etree._ProcessingInstruction-class.html" onclick="show_private();">_ProcessingInstruction</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base_tag">test_html_base_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base">test_html_base()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_element">test_sourceline_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TBODY">TBODY</a><br />
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_HTML_base_url_docinfo">test_HTML_base_url_docinfo()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base_tag">test_html_base_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_end">test_sourceline_iterparse_end()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TD">TD</a><br />
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_colon">test_html_element_name_colon()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_HTML_base_url_docinfo">test_HTML_base_url_docinfo()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_start">test_sourceline_iterparse_start()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.common_imports.HelperTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.common_imports.HelperTestCase-class.html">HelperTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_empty">test_html_element_name_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_colon">test_html_element_name_colon()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_parse">test_sourceline_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_quote">test_html_element_name_quote()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_empty">test_html_element_name_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_XML">test_sourceline_XML()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_space">test_html_element_name_space()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_quote">test_html_element_name_quote()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_standalone">test_standalone()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_file_error">test_html_file_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_space">test_html_element_name_space()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup">test_standard_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse">test_html_iterparse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_file_error">test_html_file_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_str">test_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_file">test_html_iterparse_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse">test_html_iterparse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes">test_strip_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_start">test_html_iterparse_start()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_file">test_html_iterparse_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes_ns">test_strip_attributes_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#tearDown">tearDown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_empty">test_html_parser_target_doctype_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_start">test_html_iterparse_start()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements">test_strip_elements()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.doctestcompare-module.html#temp_install">temp_install()</a><br />
<span class="index-where">(in <a href="lxml.doctestcompare-module.html">lxml.doctestcompare</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html">test_html_parser_target_doctype_html()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_empty">test_html_parser_target_doctype_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements_ns">test_strip_elements_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempXmlFileTestCase-class.html">TempXmlFileTestCase</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html_full">test_html_parser_target_doctype_html_full()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html">test_html_parser_target_doctype_html()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags">test_strip_tags()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr">test_addattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_tag">test_html_parser_target_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html_full">test_html_parser_target_doctype_html_full()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_and_remove">test_strip_tags_and_remove()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_element">test_addattr_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_prefix_nsmap">test_html_prefix_nsmap()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_tag">test_html_parser_target_tag()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_doc_style">test_strip_tags_doc_style()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_list">test_addattr_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_colon">test_html_subelement_name_colon()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_prefix_nsmap">test_html_prefix_nsmap()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_ns">test_strip_tags_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext">test_addnext()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_empty">test_html_subelement_name_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_colon">test_html_subelement_name_colon()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment">test_strip_tags_pi_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_comment">test_addnext_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_quote">test_html_subelement_name_quote()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_empty">test_html_subelement_name_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment_all">test_strip_tags_pi_comment_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_pi">test_addnext_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_space">test_html_subelement_name_space()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_quote">test_html_subelement_name_quote()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom">test_sub_data_element_nsmap_custom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root">test_addnext_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html">test_htmlparser</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_space">test_html_subelement_name_space()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom_prefixes">test_sub_data_element_nsmap_custom_prefixes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_comment">test_addnext_root_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html">test_incremental_xmlfile</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html">test_htmlparser</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_default">test_sub_data_element_nsmap_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_pi">test_addnext_root_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_index">test_index()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html">test_incremental_xmlfile</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_empty">test_sub_data_element_nsmap_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious">test_addprevious()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert">test_insert()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_index">test_index()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom">test_sub_element_nsmap_custom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_comment">test_addprevious_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_beyond_index">test_insert_beyond_index()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert">test_insert()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom_prefixes">test_sub_element_nsmap_custom_prefixes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_pi">test_addprevious_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_negative">test_insert_negative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_beyond_index">test_insert_beyond_index()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_default">test_sub_element_nsmap_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_comment">test_addprevious_root_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_negative">test_insert_negative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_empty">test_sub_element_nsmap_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_pi">test_addprevious_root_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html">test_io</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement">test_subelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_anonymous_namespace">test_anonymous_namespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html">test_io</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_attribute_invalid">test_subelement_attribute_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_append_error">test_append_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html">test_isoschematron</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_colon">test_subelement_name_colon()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib">test_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html">test_isoschematron</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_empty">test_subelement_name_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_clear">test_attrib_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors">test_iterancestors()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_quote">test_subelement_name_quote()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy">test_attrib_copy()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag">test_iterancestors_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors">test_iterancestors()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_space">test_subelement_name_space()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_deepcopy">test_attrib_deepcopy()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag_multiple">test_iterancestors_tag_multiple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag">test_iterancestors_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_nsmap">test_subelement_nsmap()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_dict">test_attrib_dict()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag_multiple">test_iterancestors_tag_multiple()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference">test_subelement_reference()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_get">test_attrib_get()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes">test_subelement_with_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_ns_clear">test_attrib_ns_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns">test_subelement_with_attributes_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop">test_attrib_pop()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_subtree_copy_thread">test_subtree_copy_thread()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_default">test_attrib_pop_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_empty_default">test_attrib_pop_empty_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args">test_attrib_pop_invalid_args()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_css-module.html">lxml.tests.test_css</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown">test_attrib_pop_unknown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_set_clear">test_attrib_set_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren">test_iterchildren()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_attribute">test_attribute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_reversed">test_iterchildren_reversed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren">test_iterchildren()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_attribute_based_lookup">test_attribute_based_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag">test_iterchildren_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_reversed">test_iterchildren_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_contains">test_attribute_contains()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple">test_iterchildren_tag_multiple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag">test_iterchildren_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_has_key">test_attribute_has_key()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple_reversed">test_iterchildren_tag_multiple_reversed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple">test_iterchildren_tag_multiple()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items">test_attribute_items()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_reversed">test_iterchildren_tag_reversed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple_reversed">test_iterchildren_tag_multiple_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io-module.html">lxml.tests.test_io</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items2">test_attribute_items2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants">test_iterdescendants()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_reversed">test_iterchildren_tag_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items_ns">test_attribute_items_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag">test_iterdescendants_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants">test_iterdescendants()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_iterator">test_attribute_iterator()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag_multiple">test_iterdescendants_tag_multiple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag">test_iterdescendants_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys">test_attribute_keys()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag_multiple">test_iterdescendants_tag_multiple()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup-module.html">lxml.tests.test_pyclasslookup</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys2">test_attribute_keys2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_attrib_ns">test_iterparse_attrib_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng-module.html">lxml.tests.test_relaxng</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys_ns">test_attribute_keys_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken">test_iterparse_broken()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_attrib_ns">test_iterparse_attrib_ns()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax-module.html">lxml.tests.test_sax</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation">test_attribute_manipulation()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_cdata">test_iterparse_cdata()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken">test_iterparse_broken()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron-module.html">lxml.tests.test_schematron</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip">test_attribute_namespace_roundtrip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_clear">test_iterparse_clear()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_cdata">test_iterparse_cdata()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_comments">test_iterparse_comments()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_clear">test_iterparse_clear()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_set">test_attribute_set()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_8bit_override">test_iterparse_encoding_8bit_override()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_comments">test_iterparse_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema-module.html">lxml.tests.test_xmlschema</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set">test_attribute_set()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_error">test_iterparse_encoding_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_8bit_override">test_iterparse_encoding_8bit_override()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid">test_attribute_set_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_file">test_iterparse_file()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_error">test_iterparse_encoding_error()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#test_suite">test_suite()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_str">test_attribute_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd">test_iterparse_file_dtd()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_file">test_iterparse_file()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_ns">test_tag_reset_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_attrib">test_attribute_update_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_getiterator">test_iterparse_getiterator()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd">test_iterparse_file_dtd()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns">test_tag_reset_root_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_dict">test_attribute_update_dict()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_keep_cdata">test_iterparse_keep_cdata()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_getiterator">test_iterparse_getiterator()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_str_subclass">test_tag_str_subclass()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_iter">test_attribute_update_iter()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_large">test_iterparse_large()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_keep_cdata">test_iterparse_keep_cdata()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_write">test_tag_write()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_sequence">test_attribute_update_sequence()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_move_elements">test_iterparse_move_elements()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_large">test_iterparse_large()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail">test_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values">test_attribute_values()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_pis">test_iterparse_pis()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_move_elements">test_iterparse_move_elements()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail1">test_tail1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_values">test_attribute_values()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_remove_comments">test_iterparse_remove_comments()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_pis">test_iterparse_pis()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_append">test_tail_append()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values_ns">test_attribute_values_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start">test_iterparse_start()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_remove_comments">test_iterparse_remove_comments()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_elementtree_root">test_tail_elementtree_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move">test_attribute_xmlns_move()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start_end">test_iterparse_start_end()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start">test_iterparse_start()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_none">test_tail_set_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attributes_get">test_attributes_get()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_strip">test_iterparse_strip()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start_end">test_iterparse_start_end()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice">test_tail_set_twice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_bad_element">test_bad_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag">test_iterparse_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_strip">test_iterparse_strip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_str_subclass">test_tail_str_subclass()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_build_from_xpath_result">test_build_from_xpath_result()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_all">test_iterparse_tag_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag">test_iterparse_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text">test_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_build_tree">test_build_tree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns">test_iterparse_tag_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_all">test_iterparse_tag_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_empty">test_text_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html">test_builder</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_all">test_iterparse_tag_ns_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns">test_iterparse_tag_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_in">test_text_escape_in()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_invalid">test_byte_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty">test_iterparse_tag_ns_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_all">test_iterparse_tag_ns_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_out">test_text_escape_out()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_zero">test_byte_zero()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty_all">test_iterparse_tag_ns_empty_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty">test_iterparse_tag_ns_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_tostring">test_text_escape_tostring()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n">test_c14n()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tree_comments">test_iterparse_tree_comments()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty_all">test_iterparse_tag_ns_empty_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_other">test_text_other()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_exclusive">test_c14n_element_tostring_exclusive()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings">test_itersiblings()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tree_comments">test_iterparse_tree_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_str_subclass">test_text_str_subclass()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_with_comments">test_c14n_element_tostring_with_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag">test_itersiblings_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings">test_itersiblings()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_create_xslt">test_thread_create_xslt()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_exclusive">test_c14n_exclusive()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag_multiple">test_itersiblings_tag_multiple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag">test_itersiblings_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_error_log">test_thread_error_log()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file">test_c14n_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext">test_itertext()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag_multiple">test_itersiblings_tag_multiple()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_mix">test_thread_mix()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file_gzip">test_c14n_file_gzip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext_child">test_itertext_child()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext">test_itertext()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_global_parse">test_thread_pipeline_global_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_gzip">test_c14n_gzip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk">test_iterwalk()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext_child">test_itertext_child()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_thread_parse">test_thread_pipeline_thread_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_exclusive">test_c14n_tostring_exclusive()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_attrib_ns">test_iterwalk_attrib_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk">test_iterwalk()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt">test_thread_xslt()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_inclusive_ns_prefixes">test_c14n_tostring_inclusive_ns_prefixes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_clear">test_iterwalk_clear()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_attrib_ns">test_iterwalk_attrib_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_xslt_attr_replace">test_thread_xslt_attr_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_with_comments">test_c14n_tostring_with_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_getiterator">test_iterwalk_getiterator()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_clear">test_iterwalk_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading-module.html">test_threading</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_with_comments">test_c14n_with_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start">test_iterwalk_start()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_getiterator">test_iterwalk_getiterator()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring">test_tostring()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_c_api">test_c_api()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end">test_iterwalk_start_end()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start">test_iterwalk_start()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element">test_tostring_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata">test_cdata()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag">test_iterwalk_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end">test_iterwalk_start_end()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element_tail">test_tostring_element_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_errors">test_cdata_errors()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all">test_iterwalk_tag_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag">test_iterwalk_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_html">test_tostring_method_html()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_parser">test_cdata_parser()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup">test_lookup()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all">test_iterwalk_tag_all()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_text">test_tostring_method_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_type">test_cdata_type()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib">test_lookup_attrib()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup">test_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_encoding">test_tostring_method_text_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_xpath">test_cdata_xpath()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool">test_lookup_bool()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib">test_lookup_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_unicode">test_tostring_method_text_unicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute">test_change_pytype_attribute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get">test_lookup_get()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool">test_lookup_bool()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_none">test_tostring_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child">test_child()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default">test_lookup_get_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get">test_lookup_get()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_pretty">test_tostring_pretty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_addattr">test_child_addattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren">test_lookup_getchildren()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default">test_lookup_get_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone">test_tostring_standalone()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr">test_child_getattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem">test_lookup_getitem()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren">test_lookup_getchildren()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone_in_out">test_tostring_standalone_in_out()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr_empty_ns">test_child_getattr_empty_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem_neg">test_lookup_getitem_neg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem">test_lookup_getitem()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode">test_tostring_unicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index">test_child_index()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getnext">test_lookup_getnext()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem_neg">test_lookup_getitem_neg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element">test_tostring_unicode_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index_neg">test_child_index_neg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getparent">test_lookup_getparent()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getnext">test_lookup_getnext()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element_tail">test_tostring_unicode_element_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_iter">test_child_iter()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious">test_lookup_getprevious()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getparent">test_lookup_getparent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_none">test_tostring_unicode_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_len">test_child_len()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getslice">test_lookup_getslice()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious">test_lookup_getprevious()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_pretty">test_tostring_unicode_pretty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_nonexistant">test_child_nonexistant()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iter_children">test_lookup_iter_children()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getslice">test_lookup_getslice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_with_tail">test_tostring_with_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_ns_nons">test_child_ns_nons()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren">test_lookup_iterchildren()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iter_children">test_lookup_iter_children()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode">test_tounicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_set_ro">test_child_set_ro()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag">test_lookup_iterchildren_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren">test_lookup_iterchildren()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element">test_tounicode_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_class_lookup">test_class_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_keep_ref_assertion">test_lookup_keep_ref_assertion()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag">test_lookup_iterchildren_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_element_tail">test_tounicode_element_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_reentry">test_class_lookup_reentry()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len">test_lookup_len()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_keep_ref_assertion">test_lookup_keep_ref_assertion()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_none">test_tounicode_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename">test_class_parse_filename()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix">test_lookup_prefix()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len">test_lookup_len()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tounicode_pretty">test_tounicode_pretty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename_remove_previous">test_class_parse_filename_remove_previous()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_sourceline">test_lookup_sourceline()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix">test_lookup_prefix()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_tree_io">test_tree_io()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_fileobject">test_class_parse_fileobject()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tag">test_lookup_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_sourceline">test_lookup_sourceline()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_tree_io_latin1">test_tree_io_latin1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_unamed_fileobject">test_class_parse_unamed_fileobject()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tail">test_lookup_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tag">test_lookup_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder">test_treebuilder()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html">test_classlookup</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_text">test_lookup_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tail">test_lookup_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target">test_treebuilder_target()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear">test_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_lookup_without_fallback">test_lookup_without_fallback()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_text">test_lookup_text()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool">test_type_bool()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub">test_clear_sub()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_main_xslt_in_thread">test_main_xslt_in_thread()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_lookup_without_fallback">test_lookup_without_fallback()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp">test_type_bool_cmp()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_tail">test_clear_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_makeelement">test_makeelement()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_main_xslt_in_thread">test_main_xslt_in_thread()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float">test_type_float()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment">test_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice">test_merge_namespaced_subtree_as_slice()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_makeelement">test_makeelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int">test_type_int()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_comment">test_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML">test_module_HTML()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice">test_merge_namespaced_subtree_as_slice()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp">test_type_int_cmp()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_empty">test_comment_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_access">test_module_HTML_access()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML">test_module_HTML()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_none_cmp">test_type_none_cmp()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice">test_comment_getitem_getslice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_broken">test_module_HTML_broken()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_access">test_module_HTML_access()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_NoneType">test_type_NoneType()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable">test_comment_immutable()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_cdata">test_module_HTML_cdata()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_broken">test_module_HTML_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str">test_type_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_no_proxy_yet">test_comment_no_proxy_yet()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_pretty_print">test_module_HTML_pretty_print()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_cdata">test_module_HTML_cdata()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_add">test_type_str_add()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_nonsense">test_comment_nonsense()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_unicode">test_module_HTML_unicode()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_pretty_print">test_module_HTML_pretty_print()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_complex">test_type_str_as_complex()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_parse_empty">test_comment_parse_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_error">test_module_parse_fileobject_error()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_unicode">test_module_HTML_unicode()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_float">test_type_str_as_float()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_text">test_comment_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_late_error">test_module_parse_fileobject_late_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_error">test_module_parse_fileobject_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_int">test_type_str_as_int()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_whitespace">test_comment_whitespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_type_error">test_module_parse_fileobject_type_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_late_error">test_module_parse_fileobject_late_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp">test_type_str_cmp()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_class_lookup">test_concurrent_class_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_gzipobject">test_module_parse_gzipobject()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_type_error">test_module_parse_fileobject_type_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_floatliteral">test_type_str_floatliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_proxies">test_concurrent_proxies()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html">test_module_parse_html()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_gzipobject">test_module_parse_gzipobject()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_hash">test_type_str_hash()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_countchildren">test_countchildren()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_error">test_module_parse_html_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html">test_module_parse_html()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_intliteral">test_type_str_intliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_crash">test_crash()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_filelike">test_module_parse_html_filelike()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_error">test_module_parse_html_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod">test_type_str_mod()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element">test_create_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_norecover">test_module_parse_html_norecover()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_filelike">test_module_parse_html_filelike()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod_data_elements">test_type_str_mod_data_elements()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element_default">test_create_element_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_large_fileobject">test_module_parse_large_fileobject()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_norecover">test_module_parse_html_norecover()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mul">test_type_str_mul()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html">test_css</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_large_fileobject">test_module_parse_large_fileobject()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence">test_type_str_sequence()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_css.CSSTestCase-class.html#test_cssselect">test_cssselect()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_css.CSSTestCase-class.html">CSSTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered">test_type_unregistered()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup">test_custom_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr">test_type_ustr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup_ns_fallback">test_custom_lookup_ns_fallback()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup">test_namespace_cleanup()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_add">test_type_ustr_add()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_attrib_attributes_precedence">test_data_element_attrib_attributes_precedence()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_namespace_lookup">test_namespace_lookup()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup">test_namespace_cleanup()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_floatliteral">test_type_ustr_floatliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_bool">test_data_element_bool()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_anonymous">test_namespace_nested_anonymous()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_namespace_lookup">test_namespace_lookup()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_intliteral">test_type_ustr_intliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg">test_data_element_data_element_arg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_nsmap">test_namespace_nested_nsmap()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_anonymous">test_namespace_nested_anonymous()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_mul">test_type_ustr_mul()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_pytype">test_data_element_data_element_arg_invalid_pytype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nsmap">test_namespace_nsmap()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_nsmap">test_namespace_nested_nsmap()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html">test_unicode</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_xsi">test_data_element_data_element_arg_invalid_xsi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces">test_namespaces()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nsmap">test_namespace_nsmap()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_attr">test_unicode_attr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype">test_data_element_data_element_arg_pytype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_namespaces_after_serialize">test_namespaces_after_serialize()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces">test_namespaces()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid">test_unicode_byte_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_none">test_data_element_data_element_arg_pytype_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_copy_element">test_namespaces_copy_element()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_namespaces_after_serialize">test_namespaces_after_serialize()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid_sequence">test_unicode_byte_invalid_sequence()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_xsitype">test_data_element_data_element_arg_pytype_xsitype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default">test_namespaces_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_copy_element">test_namespaces_copy_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_zero">test_unicode_byte_zero()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_xsitype">test_data_element_data_element_arg_xsitype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_attr">test_namespaces_default_and_attr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default">test_namespaces_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_comment">test_unicode_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_element_arg">test_data_element_element_arg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_copy_element">test_namespaces_default_copy_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_attr">test_namespaces_default_and_attr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_ns_invalid">test_unicode_ns_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float">test_data_element_float()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_elementtree">test_namespaces_elementtree()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_copy_element">test_namespaces_default_copy_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag">test_unicode_nstag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash">test_data_element_float_hash()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_reuse_after_move">test_namespaces_reuse_after_move()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_elementtree">test_namespaces_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_nstag_invalid">test_unicode_nstag_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int">test_data_element_int()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_nested_default_namespace">test_nested_default_namespace()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_reuse_after_move">test_namespaces_reuse_after_move()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_parse_stringio">test_unicode_parse_stringio()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int_hash">test_data_element_int_hash()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_nested_default_namespace">test_nested_default_namespace()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname">test_unicode_qname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_pytype">test_data_element_invalid_pytype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access2">test_ns_access2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_qname_invalid">test_unicode_qname_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_xsi">test_data_element_invalid_xsi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_attr">test_ns_attr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access2">test_ns_access2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag">test_unicode_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_NoneType">test_data_element_NoneType()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_ns_classes">test_ns_classes()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_attr">test_ns_attr()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_tag_invalid">test_unicode_tag_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom">test_data_element_nsmap_custom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring">test_ns_decl_tostring()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_ns_classes">test_ns_classes()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml">test_unicode_xml()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom_prefixes">test_data_element_nsmap_custom_prefixes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_default">test_ns_decl_tostring_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring">test_ns_decl_tostring()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_xml_broken">test_unicode_xml_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_default">test_data_element_nsmap_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_default">test_ns_decl_tostring_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_unknown_type_raises">test_unknown_type_raises()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_empty">test_data_element_nsmap_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment">test_variable_result_tree_fragment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none">test_data_element_pytype_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_vars">test_vars()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat">test_data_element_pytype_none_compat()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_setting">test_ns_setting()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_version">test_version()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes">test_data_element_pytypes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_tag_parse">test_ns_tag_parse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_setting">test_ns_setting()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_weird_dict_interaction">test_weird_dict_interaction()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str">test_data_element_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html">test_nsclasses</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_tag_parse">test_ns_tag_parse()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write">test_write()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_floatliteral">test_data_element_str_floatliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_nsmap_prefix_invalid">test_nsmap_prefix_invalid()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html">test_nsclasses</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write">test_write()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_intliteral">test_data_element_str_intliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_nsmap_prefix_invalid">test_nsmap_prefix_invalid()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_write_Element">test_write_Element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered">test_data_element_unregistered()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr">test_object_path_addattr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_write_Element_repeatedly">test_write_Element_repeatedly()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr">test_data_element_ustr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr">test_object_path_addattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest">test_write_ElementTreeDoctest()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_floatliteral">test_data_element_ustr_floatliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element">test_object_path_addattr_create_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_fail">test_write_fail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_intliteral">test_data_element_ustr_intliteral()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list">test_object_path_addattr_create_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element">test_object_path_addattr_create_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file">test_write_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes">test_data_element_xsitypes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element">test_object_path_addattr_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list">test_object_path_addattr_create_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip">test_write_file_gzip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed">test_data_element_xsitypes_prefixed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute">test_object_path_default_absolute()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element">test_object_path_addattr_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip_parse">test_write_file_gzip_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative">test_object_path_default_relative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute">test_object_path_default_absolute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzipfile_parse">test_write_file_gzipfile_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi">test_dataelement_xsi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot">test_object_path_dot()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative">test_object_path_default_relative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_write_filename">test_write_filename()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list">test_object_path_dot_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot">test_object_path_dot()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip">test_write_gzip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error">test_dataelement_xsi_prefix_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root">test_object_path_dot_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list">test_object_path_dot_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip_level">test_write_gzip_level()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_tail">test_date_element_efactory_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list">test_object_path_dot_root_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root">test_object_path_dot_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_write_invalid_filename">test_write_invalid_filename()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_text">test_date_element_efactory_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail">test_object_path_fail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list">test_object_path_dot_root_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html">test_write_method_html()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate">test_deannotate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty">test_object_path_fail_parse_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail">test_object_path_fail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_text">test_write_method_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list">test_object_path_fail_parse_empty_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty">test_object_path_fail_parse_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude">test_xinclude()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr">test_object_path_hasattr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list">test_object_path_fail_parse_empty_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude_resolver">test_xinclude_resolver()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index">test_object_path_index()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr">test_object_path_hasattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude_text">test_xinclude_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_elementtree">test_deepcopy_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup">test_object_path_index_fail_lookup()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index">test_object_path_index()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_XML">test_XML()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd">test_deepcopy_elementtree_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse">test_object_path_index_fail_parse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup">test_object_path_index_fail_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base">test_xml_base()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi">test_deepcopy_elementtree_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list">test_object_path_index_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse">test_object_path_index_fail_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base">test_xml_base()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list">test_object_path_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list">test_object_path_index_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base_attribute">test_xml_base_attribute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi">test_deepcopy_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns">test_object_path_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list">test_object_path_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base_attribute">test_xml_base_attribute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_subelement">test_deepcopy_subelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list">test_object_path_ns_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns">test_object_path_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_base_url_docinfo">test_XML_base_url_docinfo()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">test_object_path_set()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list">test_object_path_ns_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_base_url_docinfo">test_XML_base_url_docinfo()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup">test_default_class_lookup()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create">test_object_path_set_create()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">test_object_path_set()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XML_set_base_url_docinfo">test_XML_set_base_url_docinfo()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_default_namespace">test_default_namespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element">test_object_path_set_create_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create">test_object_path_set_create()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_XML_set_base_url_docinfo">test_XML_set_base_url_docinfo()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken">test_default_parser_HTML_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list">test_object_path_set_create_list()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element">test_object_path_set_create_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID">test_XMLDTDID()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname">test_default_tagname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element">test_object_path_set_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list">test_object_path_set_create_list()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_XMLDTDID_empty">test_XMLDTDID_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns">test_del_attribute_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax">test_object_path_syntax()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element">test_object_path_set_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_XMLID">test_XMLID()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed">test_del_attribute_ns_parsed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html">test_objectify</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax">test_object_path_syntax()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema-module.html">test_xmlschema</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert">test_del_insert()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html">test_objectify</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema">test_xmlschema()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setitem">test_del_setitem()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_default_attributes">test_xmlschema_default_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice">test_del_setslice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_cdata">test_parse_cdata()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_elementtree_error">test_xmlschema_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem">test_delitem()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_cdata">test_parse_cdata()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_file">test_xmlschema_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail">test_delitem_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_import_file">test_xmlschema_import_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice">test_delslice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema1">test_xmlschema_invalid_schema1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_child_tail">test_delslice_child_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_invalid_schema2">test_xmlschema_invalid_schema2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_memory">test_delslice_memory()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse">test_xmlschema_iterparse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative1">test_delslice_negative1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse_fail">test_xmlschema_iterparse_fail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2">test_delslice_negative2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html#test_parse_error_logging">test_parse_error_logging()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_nested_resolvers">test_xmlschema_nested_resolvers()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step">test_delslice_step()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html#test_parse_error_logging">test_parse_error_logging()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse">test_xmlschema_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative">test_delslice_step_negative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes">test_xmlschema_parse_default_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative2">test_delslice_step_negative2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_parse_file_dtd">test_parse_file_dtd()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes_schema_config">test_xmlschema_parse_default_attributes_schema_config()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_tail">test_delslice_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_parse_file_dtd">test_parse_file_dtd()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_fixed_attributes">test_xmlschema_parse_fixed_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths">test_descendant_paths()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers">test_xmlschema_resolvers()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child">test_descendant_paths_child()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object">test_parse_file_object()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_noroot">test_xmlschema_resolvers_noroot()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix">test_descendant_paths_prefix()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object_encoding">test_parse_file_object_encoding()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object">test_parse_file_object()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_resolvers_root">test_xmlschema_resolvers_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dir">test_dir()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_fileobject_unicode">test_parse_fileobject_unicode()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object_encoding">test_parse_file_object_encoding()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_shortcut">test_xmlschema_shortcut()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_empty">test_docinfo_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error">test_parse_parser_type_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_fileobject_unicode">test_parse_fileobject_unicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_stringio">test_xmlschema_stringio()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_name_only">test_docinfo_name_only()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments">test_parse_remove_comments()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error">test_parse_parser_type_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_boolean">test_xpath_boolean()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_public">test_docinfo_public()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis">test_parse_remove_pis()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments">test_parse_remove_comments()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_error">test_xpath_class_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_system">test_docinfo_system()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_stringio">test_parse_stringio()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis">test_parse_remove_pis()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_prefix_error">test_xpath_class_prefix_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_name_only_roundtrip">test_doctype_name_only_roundtrip()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_stringio">test_parse_stringio()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_doc">test_xpath_compile_doc()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_output_override">test_doctype_output_override()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_element">test_xpath_compile_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html">test_dtd</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_with_encoding">test_parse_with_encoding()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_error">test_xpath_compile_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd">test_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parseid">test_parseid()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_with_encoding">test_parse_with_encoding()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#test_xpath_compile_ns">test_xpath_compile_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">ETreeETXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid">test_dtd_assertValid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_parser_based_lookup">test_parser_based_lookup()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parseid">test_parseid()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_compile_vars">test_xpath_compile_vars()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_attrs">test_dtd_attrs()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding">test_parser_encoding()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_parser_based_lookup">test_parser_based_lookup()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_context_node">test_xpath_context_node()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_broken">test_dtd_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding_unknown">test_parser_encoding_unknown()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding">test_parser_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_document_root">test_xpath_document_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_file">test_dtd_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_attrib">test_parser_target_attrib()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding_unknown">test_parser_encoding_unknown()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_elementtree_error">test_xpath_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal">test_dtd_internal()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_cdata">test_parser_target_cdata()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_attrib">test_parser_target_attrib()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_error">test_xpath_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal_invalid">test_dtd_internal_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_comment">test_parser_target_comment()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_cdata">test_parser_target_cdata()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_clear">test_xpath_eval_context_clear()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid">test_dtd_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_data">test_parser_target_data()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_comment">test_parser_target_comment()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_eval_context_propagation">test_xpath_eval_context_propagation()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dtd_io">test_dtd_io()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">test_parser_target_entity()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_data">test_parser_target_data()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator">test_xpath_evaluator()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_file_not_found">test_dtd_parse_file_not_found()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity_unknown">test_parser_target_entity_unknown()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">test_parser_target_entity()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_element">test_xpath_evaluator_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_invalid">test_dtd_parse_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_close">test_parser_target_error_in_close()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity_unknown">test_parser_target_entity_unknown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree">test_xpath_evaluator_tree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid">test_dtd_parse_valid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_end">test_parser_target_error_in_end()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_close">test_parser_target_error_in_close()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_evaluator_tree_absolute">test_xpath_evaluator_tree_absolute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative">test_dtd_parse_valid_relative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start">test_parser_target_error_in_start()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_end">test_parser_target_error_in_end()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_date">test_xpath_exslt_functions_date()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_stringio">test_dtd_stringio()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start_and_close">test_parser_target_error_in_start_and_close()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start">test_parser_target_error_in_start()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_strings">test_xpath_exslt_functions_strings()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dump_none">test_dump_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception">test_parser_target_feed_exception()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start_and_close">test_parser_target_error_in_start_and_close()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions">test_xpath_extensions()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib">test_efactory_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_fromstring_exception">test_parser_target_fromstring_exception()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception">test_parser_target_feed_exception()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_error">test_xpath_extensions_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool">test_efactory_bool()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_pi">test_parser_target_pi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_fromstring_exception">test_parser_target_fromstring_exception()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_mix">test_xpath_extensions_mix()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float">test_efactory_float()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_property">test_parser_target_property()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_pi">test_parser_target_pi()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes">test_xpath_extensions_nodes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int">test_efactory_int()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_recover">test_parser_target_recover()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_property">test_parser_target_property()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append">test_xpath_extensions_nodes_append()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested">test_efactory_nested()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_tag">test_parser_target_tag()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_recover">test_parser_target_recover()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append2">test_xpath_extensions_nodes_append2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none">test_efactory_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_version">test_parser_version()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_tag">test_parser_target_tag()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_wrong_args">test_xpath_extensions_wrong_args()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str">test_efactory_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi">test_pi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_version">test_parser_version()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute">test_xpath_list_attribute()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype">test_efactory_subtype()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi">test_pi()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi">test_pi()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent">test_xpath_list_attribute_parent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode">test_efactory_unicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_pi">test_pi()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi">test_pi()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute_parent_no_smart_strings">test_xpath_list_attribute_parent_no_smart_strings()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation">test_efactory_value_concatenation()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi_nonsense">test_pi_nonsense()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_pi">test_pi()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_comment">test_xpath_list_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element">test_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_parse">test_pi_parse()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi_nonsense">test_pi_nonsense()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_elements">test_xpath_list_elements()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element">test_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_attrib">test_pi_pseudo_attributes_attrib()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_parse">test_pi_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_nothing">test_xpath_list_nothing()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_contains">test_element_contains()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_get">test_pi_pseudo_attributes_get()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_attrib">test_pi_pseudo_attributes_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text">test_xpath_list_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation">test_element_creation()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_get">test_pi_pseudo_attributes_get()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent">test_xpath_list_text_parent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_element_cyclic_gc_none">test_element_cyclic_gc_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement">test_pickle_boolelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent_no_smart_strings">test_xpath_list_text_parent_no_smart_strings()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_negative">test_element_indexing_negative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_elementtree()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement">test_pickle_boolelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_unicode_text_parent">test_xpath_list_unicode_text_parent()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_only_text">test_element_indexing_only_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement">test_pickle_floattelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace">test_xpath_namespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text">test_element_indexing_with_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement">test_pickle_intelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement">test_pickle_floattelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace_empty">test_xpath_namespace_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text2">test_element_indexing_with_text2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement">test_pickle_noneelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement">test_pickle_intelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns">test_xpath_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_colon">test_element_name_colon()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement">test_pickle_strelement()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement">test_pickle_noneelement()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_empty">test_xpath_ns_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_empty">test_element_name_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix">test_prefix()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement">test_pickle_strelement()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns_none">test_xpath_ns_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_quote">test_element_name_quote()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns">test_prefix_default_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix">test_prefix()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_number">test_xpath_number()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_space">test_element_name_space()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_processinginstruction">test_processinginstruction()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns">test_prefix_default_ns()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_prefix_error">test_xpath_prefix_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_names">test_element_names()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_hashing">test_proxy_hashing()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_processinginstruction">test_processinginstruction()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_string">test_xpath_string()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested">test_element_nested()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse">test_proxy_reuse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_hashing">test_proxy_hashing()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_text_from_other_document">test_xpath_text_from_other_document()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested_with_text">test_element_nested_with_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_del_root">test_proxy_reuse_after_del_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse">test_proxy_reuse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables">test_xpath_variables()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_nsmap">test_element_nsmap()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_gc">test_proxy_reuse_after_gc()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_del_root">test_proxy_reuse_after_del_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables_nodeset">test_xpath_variables_nodeset()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom">test_element_nsmap_custom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty">test_pyannotate_empty()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_gc">test_proxy_reuse_after_gc()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html">test_xpathevaluator</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom_prefixes">test_element_nsmap_custom_prefixes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty">test_pyannotate_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_ignore_old">test_xsiannotate_ignore_old()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_default">test_element_nsmap_default()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old">test_pyannotate_use_old()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsiannotate_use_old">test_xsiannotate_use_old()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_empty">test_element_nsmap_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html">test_pyclasslookup</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old">test_pyannotate_use_old()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate">test_xsinil_deannotate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax">test_element_sax()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pypy_proxy_collect">test_pypy_proxy_collect()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html">test_pyclasslookup</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsitype_deannotate">test_xsitype_deannotate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax_ns">test_element_sax_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">test_pytype_annotation()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pypy_proxy_collect">test_pypy_proxy_collect()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html">test_xslt</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes">test_element_with_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty">test_pytype_annotation_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">test_pytype_annotation()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt">test_xslt()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_keywords">test_element_with_attributes_keywords()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty">test_pytype_annotation_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken">test_xslt_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_ns">test_element_with_attributes_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_copy">test_xslt_copy()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_write_text">test_element_write_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation">test_pytype_xsitype_annotation()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_default_parameters">test_xslt_default_parameters()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html">test_elementtree</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname">test_qname()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation">test_pytype_xsitype_annotation()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree">test_xslt_document_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ElementTree">test_ElementTree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib">test_qname_attrib()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname">test_qname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_error">test_xslt_document_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree">test_elementtree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib_resolve">test_qname_attrib_resolve()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib">test_qname_attrib()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse">test_xslt_document_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_find_qname">test_elementtree_find_qname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_getset">test_qname_attribute_getset()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib_resolve">test_qname_attrib_resolve()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_allow">test_xslt_document_parse_allow()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_ns_qname">test_elementtree_findall_ns_qname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve">test_qname_attribute_resolve()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_getset">test_qname_attribute_getset()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny">test_xslt_document_parse_deny()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_qname">test_elementtree_findall_qname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve">test_qname_attribute_resolve()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all">test_xslt_document_parse_deny_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator">test_elementtree_getiterator()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_cmp">test_qname_cmp()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML">test_xslt_document_XML()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter">test_elementtree_getiterator_filter()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_colon">test_qname_colon()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_cmp">test_qname_cmp()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver">test_xslt_document_XML_resolver()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath">test_elementtree_getpath()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_element">test_qname_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_colon">test_qname_colon()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_elementtree_error">test_xslt_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath_partial">test_elementtree_getpath_partial()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_empty">test_qname_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_element">test_qname_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_empty">test_xslt_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_parser_target">test_elementtree_parser_target()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_namespace_localname">test_qname_namespace_localname()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_empty">test_qname_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding">test_xslt_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_parser_target_type_error">test_elementtree_parser_target_type_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space">test_qname_space()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_namespace_localname">test_qname_namespace_localname()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding_override">test_xslt_encoding_override()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_empty_parse">test_empty_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_text_resolve">test_qname_text_resolve()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space">test_qname_space()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_html_output">test_xslt_html_output()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace">test_register_namespace()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_text_resolve">test_qname_text_resolve()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include">test_xslt_include()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace">test_register_namespace()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include_from_filelike">test_xslt_include_from_filelike()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_latin1">test_encoding_8bit_latin1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types">test_registered_types()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input">test_xslt_input()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio">test_encoding_8bit_parse_stringio()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_registry">test_registry()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types">test_registered_types()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_none">test_xslt_input_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_xml">test_encoding_8bit_xml()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean">test_rel_xpath_boolean()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_registry">test_registry()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc">test_xslt_input_partial_doc()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_exact">test_encoding_exact()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_list_elements">test_rel_xpath_list_elements()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean">test_rel_xpath_boolean()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_invalid_stylesheet">test_xslt_invalid_stylesheet()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html">test_relaxng</a><br />
-<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_list_elements">test_rel_xpath_list_elements()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message">test_xslt_message()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring">test_encoding_tostring()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng">test_relaxng()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html">test_relaxng</a><br />
+<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message_terminate">test_xslt_message_terminate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding">test_encoding_tostring_default_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error">test_relaxng_elementtree_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng">test_relaxng()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_move_result">test_xslt_move_result()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub">test_encoding_tostring_sub()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error">test_relaxng_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error">test_relaxng_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters">test_xslt_multiple_parameters()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include">test_relaxng_include()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error">test_relaxng_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms">test_xslt_multiple_transforms()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown">test_encoding_tostring_unknown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema">test_relaxng_invalid_schema()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include">test_relaxng_include()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid">test_xslt_parameter_invalid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_encoding_tostring_utf16">test_encoding_tostring_utf16()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2">test_relaxng_invalid_schema2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema">test_relaxng_invalid_schema()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_missing">test_xslt_parameter_missing()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_utf8_bom">test_encoding_utf8_bom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3">test_relaxng_invalid_schema3()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2">test_relaxng_invalid_schema2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath">test_xslt_parameter_xpath()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_write_default_encoding">test_encoding_write_default_encoding()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema4">test_relaxng_invalid_schema4()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3">test_relaxng_invalid_schema3()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object">test_xslt_parameter_xpath_object()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append">test_entity_append()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_shortcut">test_relaxng_shortcut()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema4">test_relaxng_invalid_schema4()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters">test_xslt_parameters()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_error">test_entity_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_stringio">test_relaxng_stringio()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_shortcut">test_relaxng_shortcut()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi">test_xslt_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_parse">test_entity_parse()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove">test_remove()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_stringio">test_relaxng_stringio()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id">test_xslt_pi_embedded_id()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_restructure">test_entity_restructure()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove">test_remove()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid">test_xslt_pi_embedded_xmlid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_values">test_entity_values()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get">test_xslt_pi_get()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html">test_errors</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all">test_xslt_pi_get_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_escaping">test_escaping()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace">test_replace()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed">test_xslt_pi_get_all_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html">test_etree</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new">test_replace_new()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace">test_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown">test_xslt_pi_get_unknown()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_attributes">test_etree_sax_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new">test_replace_new()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new">test_xslt_pi_set_new()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment">test_etree_sax_comment()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_replace">test_xslt_pi_set_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment_root">test_etree_sax_comment_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty">test_resolve_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_repeat_transform">test_xslt_repeat_transform()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double">test_etree_sax_double()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error">test_resolve_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty">test_resolve_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_resolver_url_building">test_xslt_resolver_url_building()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error">test_etree_sax_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd">test_resolve_file_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error">test_resolve_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytearray">test_xslt_result_bytearray()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2">test_etree_sax_error2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd">test_resolve_filelike_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd">test_resolve_file_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytes">test_xslt_result_bytes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns">test_etree_sax_handler_default_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd">test_resolve_filename_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd">test_resolve_filelike_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_memoryview">test_xslt_result_memoryview()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns_None">test_etree_sax_handler_default_ns_None()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative">test_resolve_filename_dtd_relative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd">test_resolve_filename_dtd()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_shortcut">test_xslt_shortcut()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns">test_etree_sax_no_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd">test_resolve_string_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative">test_resolve_filename_dtd_relative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_string_parameters">test_xslt_string_parameters()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns_attributes">test_etree_sax_no_ns_attributes()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd">test_resolve_string_dtd()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode">test_xslt_unicode()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
+</tr>
+<tr>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns1">test_etree_sax_ns1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root">test_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode">test_xslt_unicode()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode_standalone">test_xslt_unicode_standalone()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi">test_etree_sax_pi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns_attributes">test_etree_sax_ns_attributes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom">test_sax_to_pulldom()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml-module.html">lxml</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root">test_etree_sax_pi_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi">test_etree_sax_pi()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types">test_schema_types()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.QName-class.html">QName</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns">test_etree_sax_redefine_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root">test_etree_sax_pi_root()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed">test_schema_types_prefixed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple">test_etree_sax_simple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns">test_etree_sax_redefine_ns()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html">test_schematron</a><br />
<span class="index-where">(in <a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree._Entity-class.html" onclick="show_private();">_Entity</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple">test_etree_sax_simple()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.objectify.ObjectifiedElement-class.html#text">text</a><br />
<span class="index-where">(in <a href="lxml.objectify.ObjectifiedElement-class.html">ObjectifiedElement</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_abstract">test_schematron_abstract()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.doctestcompare.LXMLOutputChecker-class.html">LXMLOutputChecker</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_assertValid">test_schematron_assertValid()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.HtmlMixin-class.html">HtmlMixin</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_call">test_schematron_call()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_customization">test_schematron_customization()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.TextareaElement-class.html">TextareaElement</a></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_empty_pattern">test_schematron_empty_pattern()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_error_log">test_schematron_error_log()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html#this_dir">this_dir</a><br />
<span class="index-where">(in <a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_element">test_schematron_from_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html#this_dir">this_dir</a><br />
<span class="index-where">(in <a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_file">test_schematron_from_file()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_tree">test_schematron_from_tree()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_args">test_schematron_invalid_args()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema">test_schematron_invalid_schema()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_io-module.html">lxml.tests.test_io</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases">test_schematron_phases()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases_kwarg">test_schematron_phases_kwarg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_relaxng_embedded">test_schematron_relaxng_embedded()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_pyclasslookup-module.html">lxml.tests.test_pyclasslookup</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_result_report">test_schematron_result_report()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html#this_dir">this_dir</a><br />
<span class="index-where">(in <a href="lxml.tests.test_relaxng-module.html">lxml.tests.test_relaxng</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron">test_schematron_store_schematron()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_sax-module.html">lxml.tests.test_sax</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_preceding_text">test_failure_preceding_text()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_xslt">test_schematron_store_xslt()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html#this_dir">this_dir</a><br />
<span class="index-where">(in <a href="lxml.tests.test_schematron-module.html">lxml.tests.test_schematron</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_Element">test_failure_trailing_Element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_preceding_text">test_failure_preceding_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_validate">test_schematron_validate()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_text">test_failure_trailing_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_Element">test_failure_trailing_Element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_xmlschema_embedded">test_schematron_xmlschema_embedded()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_text">test_failure_trailing_text()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_set_string">test_set_string()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema-module.html#this_dir">this_dir</a><br />
<span class="index-where">(in <a href="lxml.tests.test_xmlschema-module.html">lxml.tests.test_xmlschema</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_empty">test_set_text_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_none">test_set_text_none()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover">test_feed_parser_recover()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr">test_setattr()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.diff.InsensitiveSequenceMatcher-class.html#threshold">threshold</a><br />
<span class="index-where">(in <a href="lxml.html.diff.InsensitiveSequenceMatcher-class.html" onclick="show_private();">InsensitiveSequenceMatcher</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover">test_feed_parser_recover()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr_nonunicode">test_setattr_nonunicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TITLE">TITLE</a><br />
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem">test_setitem()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall">test_findall()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem2">test_setitem2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize">tokenize()</a><br />
<span class="index-where">(in <a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_different_nsmaps">test_findall_different_nsmaps()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall">test_findall()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setitem_assert">test_setitem_assert()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize_annotated">tokenize_annotated()</a><br />
<span class="index-where">(in <a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_different_nsmaps">test_findall_different_nsmaps()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_indexerror">test_setitem_indexerror()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.defs-module.html#top_level_tags">top_level_tags</a><br />
<span class="index-where">(in <a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_replace">test_setitem_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.etree.XSLT-class.html#tostring">tostring()</a><br />
<span class="index-where">(in <a href="lxml.etree.XSLT-class.html">XSLT</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string">test_setitem_string()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.etree-module.html#tostring">tostring()</a><br />
<span class="index-where">(in <a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_syntax_error">test_findall_syntax_error()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string_special">test_setitem_string_special()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.etree-module.html#tostringlist">tostringlist()</a><br />
<span class="index-where">(in <a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstring">test_fromstring()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_syntax_error">test_findall_syntax_error()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_tail">test_setitem_tail()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.etree-module.html#tounicode">tounicode()</a><br />
<span class="index-where">(in <a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstring">test_fromstring()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice">test_setslice()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all">test_setslice_all()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.ErrorDomains-class.html">ErrorDomains</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_empty">test_setslice_all_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_all_empty_reversed">test_setslice_all_empty_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace">test_setslice_all_replace()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed">test_setslice_all_replace_reversed()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_all_comment_pi">test_getiterator_filter_all_comment_pi()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.etree.TreeBuilder-class.html">TreeBuilder</a><br />
<span class="index-where">(in <a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_comment">test_getiterator_filter_comment()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_all_comment_pi">test_getiterator_filter_all_comment_pi()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_complete">test_setslice_complete()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="xml.etree.ElementTree.TreeBuilder-class.html">TreeBuilder</a></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_element">test_getiterator_filter_element()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_comment">test_getiterator_filter_comment()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_elements">test_setslice_elements()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TT">TT</a><br />
<span class="index-where">(in <a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_entities">test_getiterator_filter_entities()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_element">test_getiterator_filter_element()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree._LogEntry-class.html" onclick="show_private();">_LogEntry</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_local_name">test_getiterator_filter_local_name()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_entities">test_getiterator_filter_entities()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.html.InputElement-class.html">InputElement</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple">test_getiterator_filter_multiple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_local_name">test_getiterator_filter_local_name()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end">test_setslice_end()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<span class="index-where">(in <a href="lxml.objectify.PyType-class.html">PyType</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple_tuple">test_getiterator_filter_multiple_tuple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple">test_getiterator_filter_multiple()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert">test_setslice_insert()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<span class="index-where">(in <a href="lxml.etree._LogEntry-class.html" onclick="show_private();">_LogEntry</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_namespace">test_getiterator_filter_namespace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple_tuple">test_getiterator_filter_multiple_tuple()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert_neg">test_setslice_insert_neg()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_pi">test_getiterator_filter_pi()</a><br />
-<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_namespace">test_getiterator_filter_namespace()</a><br />
+<span class="index-where">(in <a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative">test_setslice_negative()</a><br />
<span class="index-where">(in <a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
<td width="33%" class="link-index"> </td>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<span class="summary-type"> </span>
</td><td class="summary">
<a href="lxml.etree-module.html#__pyx_capi__" class="summary-name" onclick="show_private();">__pyx_capi__</a> = <code title="{'appendChild': <capsule object "void (struct LxmlElement *, struct Lx\
-mlElement *)" at 0x2cb1fc0>,
+mlElement *)" at 0x16b71e0>,
'attributeValue': <capsule object "PyObject *(xmlNode *, xmlAttr *)" \
-at 0x2cb1c90>,
+at 0x16b2e70>,
'attributeValueFromNsName': <capsule object "PyObject *(xmlNode *, co\
-nst xmlChar *, const xmlChar *)" at 0x2cb1cc0>,
+nst xmlChar *, const xmlChar *)" at 0x16b2ea0>,
'callLookupFallback': <capsule object "PyObject *(struct LxmlFallback\
-ElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x2cb1960>\
+ElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x16b2b40>\
..."><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">appendChild</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "void (struct L<code class="variable-ellipsis">...</code></code>
</td>
</tr>
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="lxml.etree-module.html#__test__" class="summary-name" onclick="show_private();">__test__</a> = <code title="{u'XML (line 2946)': u'''XML(text, parser=None, base_url=None)
+ <a href="lxml.etree-module.html#__test__" class="summary-name" onclick="show_private();">__test__</a> = <code title="{u'XML (line 2950)': u'''XML(text, parser=None, base_url=None)
Parses an XML document or fragment from a string constant.
Returns the root node (or the result returned by a parser target).
like in
>>> root = etree.XML("<root><test/></root>")
-..."><code class="variable-group">{</code><code class="variable-quote">u'</code><code class="variable-string">XML (line 2946)</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">u'</code><code class="variable-string">XML(text, parser=None, base_</code><code class="variable-ellipsis">...</code></code>
+..."><code class="variable-group">{</code><code class="variable-quote">u'</code><code class="variable-string">XML (line 2950)</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">u'</code><code class="variable-string">XML(text, parser=None, base_</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="memory_debugger"></a><span class="summary-name">memory_debugger</span> = <code title="<lxml.etree._MemDebug object at 0x2b1f7fe618a0>"><lxml.etree._MemDebug object at 0x2b1f7fe618a0></code>
+ <a name="memory_debugger"></a><span class="summary-name">memory_debugger</span> = <code title="<lxml.etree._MemDebug object at 0x2b3747793890>"><lxml.etree._MemDebug object at 0x2b3747793890></code>
</td>
</tr>
</table>
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">appendChild</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "void (struct LxmlElement *, struct Lx<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-mlElement *)" at 0x2cb1fc0><code class="variable-op">,</code>
+mlElement *)" at 0x16b71e0><code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">attributeValue</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(xmlNode *, xmlAttr *)" <span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-at 0x2cb1c90><code class="variable-op">,</code>
+at 0x16b2e70><code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">attributeValueFromNsName</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(xmlNode *, co<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-nst xmlChar *, const xmlChar *)" at 0x2cb1cc0><code class="variable-op">,</code>
+nst xmlChar *, const xmlChar *)" at 0x16b2ea0><code class="variable-op">,</code>
<code class="variable-quote">'</code><code class="variable-string">callLookupFallback</code><code class="variable-quote">'</code><code class="variable-op">: </code><capsule object "PyObject *(struct LxmlFallback<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-ElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x2cb1960><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+ElementClassLookup *, struct LxmlDocument *, xmlNode *)" at 0x16b2b40><code class="variable-op"></code><span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
<code class="variable-ellipsis">...</code>
</pre></td></tr></table>
</dd>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">u'</code><code class="variable-string">XML (line 2946)</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">u'''</code><code class="variable-string">XML(text, parser=None, base_url=None)</code>
+<code class="variable-group">{</code><code class="variable-quote">u'</code><code class="variable-string">XML (line 2950)</code><code class="variable-quote">'</code><code class="variable-op">: </code><code class="variable-quote">u'''</code><code class="variable-string">XML(text, parser=None, base_url=None)</code>
<code class="variable-string"></code>
<code class="variable-string"> Parses an XML document or fragment from a string constant.</code>
<code class="variable-string"> Returns the root node (or the result returned by a parser target).</code>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
</pre>
<hr />
-<pre class="literalblock">
-xmlfile(self, output_file, encoding=None, compression=None)
+<p>xmlfile(self, output_file, encoding=None, compression=None)</p>
+<p>A simple mechanism for incremental XML serialisation.</p>
+<p>Usage example:</p>
+<pre class="rst-literal-block">
+with xmlfile("somefile.xml", encoding='utf-8') as xf:
+ xf.write_declaration(standalone=True)
+ xf.write_doctype('<!DOCTYPE root SYSTEM "some.dtd">')
-A simple mechanism for incremental XML serialisation.
-
-Usage example:
-
- with xmlfile("somefile.xml", encoding='utf-8') as xf:
- xf.write_declaration(standalone=True)
- xf.write_doctype('<!DOCTYPE root SYSTEM "some.dtd">')
-
- # generate an element (the root element)
- with xf.Element('root'):
- # write a complete Element into the open root element
- xf.write(etree.Element('test'))
-
- # generate and write more Elements, e.g. through iterparse
- for element in generate_some_elements():
- # serialise generated elements into the XML file
- xf.write(element)
+ # generate an element (the root element)
+ with xf.Element('root'):
+ # write a complete Element into the open root element
+ xf.write(etree.Element('test'))
+ # generate and write more Elements, e.g. through iterparse
+ for element in generate_some_elements():
+ # serialise generated elements into the XML file
+ xf.write(element)
</pre>
<!-- ==================== INSTANCE METHODS ==================== -->
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="_abc_negative_cache"></a><span class="summary-name">_abc_negative_cache</span> = <code title="<_weakrefset.WeakSet object at 0x33f34d0>"><_weakrefset.WeakSet object at 0x33f34d0></code>
+ <a name="_abc_negative_cache"></a><span class="summary-name">_abc_negative_cache</span> = <code title="<_weakrefset.WeakSet object at 0x1dee610>"><_weakrefset.WeakSet object at 0x1dee610></code>
</td>
</tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="<_weakrefset.WeakSet object at 0x33f3390>"><_weakrefset.WeakSet object at 0x33f3390></code>
+ <a name="_abc_registry"></a><span class="summary-name">_abc_registry</span> = <code title="<_weakrefset.WeakSet object at 0x1dee4d0>"><_weakrefset.WeakSet object at 0x1dee4d0></code>
</td>
</tr>
<tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="lxml.html.diff-module.html#html_annotate" class="summary-sig-name">html_annotate</a>(<span class="summary-sig-arg">doclist</span>,
- <span class="summary-sig-arg">markup</span>=<span class="summary-sig-default"><function default_markup at 0x370a668></span>)</span><br />
+ <span class="summary-sig-arg">markup</span>=<span class="summary-sig-default"><function default_markup at 0x21076e0></span>)</span><br />
doclist should be ordered from oldest to newest, like:</td>
<td align="right" valign="top">
<span class="codelink"><a href="lxml.html.diff-pysrc.html#html_annotate">source code</a></span>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">html_annotate</span>(<span class="sig-arg">doclist</span>,
- <span class="sig-arg">markup</span>=<span class="sig-default"><function default_markup at 0x370a668></span>)</span>
+ <span class="sig-arg">markup</span>=<span class="sig-default"><function default_markup at 0x21076e0></span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="lxml.html.diff-pysrc.html#html_annotate">source code</a></span>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:24 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:24 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="E"></a><span class="summary-name">E</span> = <code title="<lxml.objectify.ElementMaker object at 0x2f1fbf0>"><lxml.objectify.ElementMaker object at 0x2f1fbf0></code>
+ <a name="E"></a><span class="summary-name">E</span> = <code title="<lxml.objectify.ElementMaker object at 0x191dd70>"><lxml.objectify.ElementMaker object at 0x191dd70></code>
</td>
</tr>
<tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
lxml.tests.test_xpathevaluator.tag
xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-13', 'tag', 'link-11');">tag</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler"></a><div id="ElementTreeContentHandler-def"><a name="L29"></a><tt class="py-lineno"> 29</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler-toggle" onclick="return toggle('ElementTreeContentHandler');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html">ElementTreeContentHandler</a><tt class="py-op">(</tt><tt class="py-base-class">ContentHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ElementTreeContentHandler-expanded"><a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> <tt class="py-docstring">"""Build an lxml ElementTree from SAX events.</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="ElementTreeContentHandler.__init__"></a><div id="ElementTreeContentHandler.__init__-def"><a name="L32"></a><tt class="py-lineno"> 32</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.__init__-toggle" onclick="return toggle('ElementTreeContentHandler.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">makeelement</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.__init__-expanded"><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> <tt class="py-op">}</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-14" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-14', 'makeelement', 'link-14');">makeelement</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-15', 'makeelement', 'link-14');">makeelement</a></tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="lxml.etree
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler"></a><div id="ElementTreeContentHandler-def"><a name="L30"></a><tt class="py-lineno"> 30</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler-toggle" onclick="return toggle('ElementTreeContentHandler');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html">ElementTreeContentHandler</a><tt class="py-op">(</tt><tt class="py-base-class">ContentHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ElementTreeContentHandler-expanded"><a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> <tt class="py-docstring">"""Build an lxml ElementTree from SAX events.</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="ElementTreeContentHandler.__init__"></a><div id="ElementTreeContentHandler.__init__-def"><a name="L33"></a><tt class="py-lineno"> 33</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.__init__-toggle" onclick="return toggle('ElementTreeContentHandler.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">makeelement</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.__init__-expanded"><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-name">None</tt> <tt class="py-op">:</tt> <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> <tt class="py-op">}</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-14" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-14', 'makeelement', 'link-14');">makeelement</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-15', 'makeelement', 'link-14');">makeelement</a></tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
lxml.objectify.Element
lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-17', 'Element', 'link-17');">Element</a></tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_makeelement</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-18', 'makeelement', 'link-14');">makeelement</a></tt> </tt>
-</div><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler._get_etree"></a><div id="ElementTreeContentHandler._get_etree-def"><a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler._get_etree-toggle" onclick="return toggle('ElementTreeContentHandler._get_etree');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#_get_etree">_get_etree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler._get_etree-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler._get_etree-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-docstring">"Contains the generated ElementTree after parsing is finished."</tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="lxml.etree.ElementTree
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_makeelement</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name"><a title="lxml.etree._Element.makeelement" class="py-name" href="#" onclick="return doclink('link-18', 'makeelement', 'link-14');">makeelement</a></tt> </tt>
+</div><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler._get_etree"></a><div id="ElementTreeContentHandler._get_etree-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler._get_etree-toggle" onclick="return toggle('ElementTreeContentHandler._get_etree');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#_get_etree">_get_etree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler._get_etree-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler._get_etree-expanded"><a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-docstring">"Contains the generated ElementTree after parsing is finished."</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="lxml.etree.ElementTree
xml.etree.ElementTree
xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-19', 'ElementTree', 'link-6');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="lxml.etree
+</div><a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-20', 'etree', 'link-3');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-21" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler._get_etree()=lxml.sax.ElementTreeContentHandler-class.html#_get_etree"><a title="lxml.sax.ElementTreeContentHandler._get_etree" class="py-name" href="#" onclick="return doclink('link-21', '_get_etree', 'link-21');">_get_etree</a></tt><tt class="py-op">,</tt> <tt class="py-name">doc</tt><tt class="py-op">=</tt><tt id="link-22" class="py-name"><a title="lxml.sax.ElementTreeContentHandler._get_etree" class="py-name" href="#" onclick="return doclink('link-22', '_get_etree', 'link-21');">_get_etree</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Variable lxml.html.ElementSoup.__doc__=lxml.html.ElementSoup-module.html#__doc__,Variable lxml.html.soupparser.__doc__=lxml.html.soupparser-module.html#__doc__"><a title="lxml.html.ElementSoup.__doc__
lxml.html.soupparser.__doc__" class="py-name" href="#" onclick="return doclink('link-23', '__doc__', 'link-23');">__doc__</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.setDocumentLocator"></a><div id="ElementTreeContentHandler.setDocumentLocator-def"><a name="L49"></a><tt class="py-lineno"> 49</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.setDocumentLocator-toggle" onclick="return toggle('ElementTreeContentHandler.setDocumentLocator');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#setDocumentLocator">setDocumentLocator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">locator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.setDocumentLocator-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.setDocumentLocator-expanded"><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.startDocument"></a><div id="ElementTreeContentHandler.startDocument-def"><a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startDocument-toggle" onclick="return toggle('ElementTreeContentHandler.startDocument');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startDocument">startDocument</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.startDocument-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startDocument-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.endDocument"></a><div id="ElementTreeContentHandler.endDocument-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endDocument-toggle" onclick="return toggle('ElementTreeContentHandler.endDocument');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endDocument">endDocument</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.endDocument-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endDocument-expanded"><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.startPrefixMapping"></a><div id="ElementTreeContentHandler.startPrefixMapping-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startPrefixMapping-toggle" onclick="return toggle('ElementTreeContentHandler.startPrefixMapping');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping">startPrefixMapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.startPrefixMapping-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startPrefixMapping-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">[</tt><tt id="link-24" class="py-name" targets="Variable lxml.etree._Element.prefix=lxml.etree._Element-class.html#prefix"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-24', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name" targets="Variable lxml.tests.test_xpathevaluator.uri=lxml.tests.test_xpathevaluator-module.html#uri"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-25', 'uri', 'link-25');">uri</a></tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-26" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-26', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method lxml.etree._Element.append()=lxml.etree._Element-class.html#append"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-27', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-28', 'uri', 'link-25');">uri</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-29" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-29', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-30" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-30', 'uri', 'link-25');">uri</a></tt><tt class="py-op">]</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-31" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-31', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-32', 'uri', 'link-25');">uri</a></tt> </tt>
-</div><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.endPrefixMapping"></a><div id="ElementTreeContentHandler.endPrefixMapping-def"><a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endPrefixMapping-toggle" onclick="return toggle('ElementTreeContentHandler.endPrefixMapping');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping">endPrefixMapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.endPrefixMapping-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endPrefixMapping-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">ns_uri_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-33" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-33', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">ns_uri_list</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method lxml.etree._Attrib.pop()=lxml.etree._Attrib-class.html#pop"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-34', 'pop', 'link-34');">pop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-35" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-35', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt class="py-name">ns_uri_list</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler._buildTag"></a><div id="ElementTreeContentHandler._buildTag-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler._buildTag-toggle" onclick="return toggle('ElementTreeContentHandler._buildTag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#_buildTag">_buildTag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name_tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler._buildTag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler._buildTag-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt> <tt class="py-op">=</tt> <tt class="py-name">ns_name_tuple</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns_uri</tt><tt class="py-op">:</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_name_tuple</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt><tt class="py-op">:</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">local_name</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">el_tag</tt> </tt>
-</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.startElementNS"></a><div id="ElementTreeContentHandler.startElementNS-def"><a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startElementNS-toggle" onclick="return toggle('ElementTreeContentHandler.startElementNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startElementNS">startElementNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name</tt><tt class="py-op">,</tt> <tt class="py-param">qname</tt><tt class="py-op">,</tt> <tt class="py-param">attributes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.startElementNS-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startElementNS-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">el_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler._buildTag()=lxml.sax.ElementTreeContentHandler-class.html#_buildTag"><a title="lxml.sax.ElementTreeContentHandler._buildTag" class="py-name" href="#" onclick="return doclink('link-36', '_buildTag', 'link-36');">_buildTag</a></tt><tt class="py-op">(</tt><tt class="py-name">ns_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">iter_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method lxml.etree._Attrib.iteritems()=lxml.etree._Attrib-class.html#iteritems,Method lxml.etree._IDDict.iteritems()=lxml.etree._IDDict-class.html#iteritems"><a title="lxml.etree._Attrib.iteritems
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.setDocumentLocator"></a><div id="ElementTreeContentHandler.setDocumentLocator-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.setDocumentLocator-toggle" onclick="return toggle('ElementTreeContentHandler.setDocumentLocator');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#setDocumentLocator">setDocumentLocator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">locator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.setDocumentLocator-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.setDocumentLocator-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.startDocument"></a><div id="ElementTreeContentHandler.startDocument-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startDocument-toggle" onclick="return toggle('ElementTreeContentHandler.startDocument');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startDocument">startDocument</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.startDocument-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startDocument-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.endDocument"></a><div id="ElementTreeContentHandler.endDocument-def"><a name="L56"></a><tt class="py-lineno"> 56</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endDocument-toggle" onclick="return toggle('ElementTreeContentHandler.endDocument');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endDocument">endDocument</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.endDocument-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endDocument-expanded"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.startPrefixMapping"></a><div id="ElementTreeContentHandler.startPrefixMapping-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startPrefixMapping-toggle" onclick="return toggle('ElementTreeContentHandler.startPrefixMapping');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping">startPrefixMapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.startPrefixMapping-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startPrefixMapping-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">[</tt><tt id="link-24" class="py-name" targets="Variable lxml.etree._Element.prefix=lxml.etree._Element-class.html#prefix"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-24', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name" targets="Variable lxml.tests.test_xpathevaluator.uri=lxml.tests.test_xpathevaluator-module.html#uri"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-25', 'uri', 'link-25');">uri</a></tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-26" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-26', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method lxml.etree._Element.append()=lxml.etree._Element-class.html#append"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-27', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-28', 'uri', 'link-25');">uri</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-29" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-29', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-30" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-30', 'uri', 'link-25');">uri</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-31" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-31', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-32', 'uri', 'link-25');">uri</a></tt> </tt>
+</div><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.endPrefixMapping"></a><div id="ElementTreeContentHandler.endPrefixMapping-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endPrefixMapping-toggle" onclick="return toggle('ElementTreeContentHandler.endPrefixMapping');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping">endPrefixMapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">prefix</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.endPrefixMapping-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endPrefixMapping-expanded"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">ns_uri_list</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_ns_mapping</tt><tt class="py-op">[</tt><tt id="link-33" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-33', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">ns_uri_list</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method lxml.etree._Attrib.pop()=lxml.etree._Attrib-class.html#pop"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-34', 'pop', 'link-34');">pop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-35" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-35', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt> <tt class="py-op">=</tt> <tt class="py-name">ns_uri_list</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler._buildTag"></a><div id="ElementTreeContentHandler._buildTag-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler._buildTag-toggle" onclick="return toggle('ElementTreeContentHandler._buildTag');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#_buildTag">_buildTag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name_tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler._buildTag-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler._buildTag-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt> <tt class="py-op">=</tt> <tt class="py-name">ns_name_tuple</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns_uri</tt><tt class="py-op">:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_name_tuple</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_default_ns</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">local_name</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">el_tag</tt> </tt>
+</div><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.startElementNS"></a><div id="ElementTreeContentHandler.startElementNS-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startElementNS-toggle" onclick="return toggle('ElementTreeContentHandler.startElementNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startElementNS">startElementNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name</tt><tt class="py-op">,</tt> <tt class="py-param">qname</tt><tt class="py-op">,</tt> <tt class="py-param">attributes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.startElementNS-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startElementNS-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">el_name</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler._buildTag()=lxml.sax.ElementTreeContentHandler-class.html#_buildTag"><a title="lxml.sax.ElementTreeContentHandler._buildTag" class="py-name" href="#" onclick="return doclink('link-36', '_buildTag', 'link-36');">_buildTag</a></tt><tt class="py-op">(</tt><tt class="py-name">ns_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-name">iter_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method lxml.etree._Attrib.iteritems()=lxml.etree._Attrib-class.html#iteritems,Method lxml.etree._IDDict.iteritems()=lxml.etree._IDDict-class.html#iteritems"><a title="lxml.etree._Attrib.iteritems
lxml.etree._IDDict.iteritems" class="py-name" href="#" onclick="return doclink('link-37', 'iteritems', 'link-37');">iteritems</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">iter_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method lxml.etree._Attrib.items()=lxml.etree._Attrib-class.html#items,Method lxml.etree._Element.items()=lxml.etree._Element-class.html#items,Method lxml.etree._IDDict.items()=lxml.etree._IDDict-class.html#items"><a title="lxml.etree._Attrib.items
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">iter_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method lxml.etree._Attrib.items()=lxml.etree._Attrib-class.html#items,Method lxml.etree._Element.items()=lxml.etree._Element-class.html#items,Method lxml.etree._IDDict.items()=lxml.etree._IDDict-class.html#items"><a title="lxml.etree._Attrib.items
lxml.etree._Element.items
lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-38', 'items', 'link-38');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">,</tt> <tt id="link-39" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">,</tt> <tt id="link-39" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-39', 'value', 'link-39');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">iter_attributes</tt><tt class="py-op">:</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">name_tuple</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="lxml.html.CheckboxGroup.value
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-string">"{%s}%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">name_tuple</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-name">name_tuple</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-40" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-40', 'value', 'link-39');">value</a></tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">element_stack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> \ </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_makeelement</tt><tt class="py-op">(</tt><tt class="py-name">el_name</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">)</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt> <tt class="py-keyword">and</tt> <tt id="link-41" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-41', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'addprevious'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">sibling</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">:</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method lxml.etree._Element.addprevious()=lxml.etree._Element-class.html#addprevious"><a title="lxml.etree._Element.addprevious" class="py-name" href="#" onclick="return doclink('link-42', 'addprevious', 'link-42');">addprevious</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">)</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-43', 'SubElement', 'link-7');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">el_name</tt><tt class="py-op">,</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">)</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">element_stack</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-44', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">)</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method lxml.etree._Attrib.clear()=lxml.etree._Attrib-class.html#clear,Method lxml.etree._Element.clear()=lxml.etree._Element-class.html#clear,Method lxml.etree._ErrorLog.clear()=lxml.etree._ErrorLog-class.html#clear"><a title="lxml.etree._Attrib.clear
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">element_stack</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-op">=</tt> \ </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_makeelement</tt><tt class="py-op">(</tt><tt class="py-name">el_name</tt><tt class="py-op">,</tt> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">)</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt> <tt class="py-keyword">and</tt> <tt id="link-41" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-41', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'addprevious'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">sibling</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method lxml.etree._Element.addprevious()=lxml.etree._Element-class.html#addprevious"><a title="lxml.etree._Element.addprevious" class="py-name" href="#" onclick="return doclink('link-42', 'addprevious', 'link-42');">addprevious</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt id="link-43" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-43', 'SubElement', 'link-7');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">el_name</tt><tt class="py-op">,</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">attrs</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">element_stack</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-44', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">)</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_new_mappings</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name" targets="Method lxml.etree._Attrib.clear()=lxml.etree._Attrib-class.html#clear,Method lxml.etree._Element.clear()=lxml.etree._Element-class.html#clear,Method lxml.etree._ErrorLog.clear()=lxml.etree._ErrorLog-class.html#clear"><a title="lxml.etree._Attrib.clear
lxml.etree._Element.clear
lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-45', 'clear', 'link-45');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.processingInstruction"></a><div id="ElementTreeContentHandler.processingInstruction-def"><a name="L116"></a><tt class="py-lineno">116</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.processingInstruction-toggle" onclick="return toggle('ElementTreeContentHandler.processingInstruction');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#processingInstruction">processingInstruction</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">target</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.processingInstruction-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.processingInstruction-expanded"><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt id="link-46" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-46', 'pi', 'link-46');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt id="link-47" class="py-name" targets="Variable lxml.etree._ProcessingInstruction.target=lxml.etree._ProcessingInstruction-class.html#target"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-47', 'target', 'link-47');">target</a></tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name" targets="Method lxml.etree.TreeBuilder.data()=lxml.etree.TreeBuilder-class.html#data"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-48', 'data', 'link-48');">data</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-49', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-50', 'pi', 'link-46');">pi</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-51', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-52', 'pi', 'link-46');">pi</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.endElementNS"></a><div id="ElementTreeContentHandler.endElementNS-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endElementNS-toggle" onclick="return toggle('ElementTreeContentHandler.endElementNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endElementNS">endElementNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name</tt><tt class="py-op">,</tt> <tt class="py-param">qname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.endElementNS-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endElementNS-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-53', 'pop', 'link-34');">pop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="lxml.sax.ElementTreeContentHandler._buildTag" class="py-name" href="#" onclick="return doclink('link-54', '_buildTag', 'link-36');">_buildTag</a></tt><tt class="py-op">(</tt><tt class="py-name">ns_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">el_tag</tt> <tt class="py-op">!=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="lxml.etree._Comment.tag
+</div><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.processingInstruction"></a><div id="ElementTreeContentHandler.processingInstruction-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.processingInstruction-toggle" onclick="return toggle('ElementTreeContentHandler.processingInstruction');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#processingInstruction">processingInstruction</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">target</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.processingInstruction-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.processingInstruction-expanded"><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt id="link-46" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-46', 'pi', 'link-46');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt id="link-47" class="py-name" targets="Variable lxml.etree._ProcessingInstruction.target=lxml.etree._ProcessingInstruction-class.html#target"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-47', 'target', 'link-47');">target</a></tt><tt class="py-op">,</tt> <tt id="link-48" class="py-name" targets="Method lxml.etree.TreeBuilder.data()=lxml.etree.TreeBuilder-class.html#data"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-48', 'data', 'link-48');">data</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_root_siblings</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-49', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-50" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-50', 'pi', 'link-46');">pi</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-51', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt id="link-52" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-52', 'pi', 'link-46');">pi</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.endElementNS"></a><div id="ElementTreeContentHandler.endElementNS-def"><a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endElementNS-toggle" onclick="return toggle('ElementTreeContentHandler.endElementNS');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endElementNS">endElementNS</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_name</tt><tt class="py-op">,</tt> <tt class="py-param">qname</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.endElementNS-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endElementNS-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name"><a title="lxml.etree._Attrib.pop" class="py-name" href="#" onclick="return doclink('link-53', 'pop', 'link-34');">pop</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">el_tag</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="lxml.sax.ElementTreeContentHandler._buildTag" class="py-name" href="#" onclick="return doclink('link-54', '_buildTag', 'link-36');">_buildTag</a></tt><tt class="py-op">(</tt><tt class="py-name">ns_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">el_tag</tt> <tt class="py-op">!=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-55', 'tag', 'link-11');">tag</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name" targets="Class lxml.sax.SaxError=lxml.sax.SaxError-class.html"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-56', 'SaxError', 'link-56');">SaxError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unexpected element closed: "</tt> <tt class="py-op">+</tt> <tt class="py-name">el_tag</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.startElement"></a><div id="ElementTreeContentHandler.startElement-def"><a name="L129"></a><tt class="py-lineno">129</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startElement-toggle" onclick="return toggle('ElementTreeContentHandler.startElement');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startElement">startElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attributes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.startElement-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startElement-expanded"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startElementNS()=lxml.sax.ElementTreeContentHandler-class.html#startElementNS"><a title="lxml.sax.ElementTreeContentHandler.startElementNS" class="py-name" href="#" onclick="return doclink('link-57', 'startElementNS', 'link-57');">startElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name" targets="Variable lxml.etree.DTD.name=lxml.etree.DTD-class.html#name,Variable lxml.etree._Entity.name=lxml.etree._Entity-class.html#name,Variable lxml.html.InputMixin.name=lxml.html.InputMixin-class.html#name,Variable lxml.objectify.PyType.name=lxml.objectify.PyType-class.html#name"><a title="lxml.etree.DTD.name
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-56" class="py-name" targets="Class lxml.sax.SaxError=lxml.sax.SaxError-class.html"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-56', 'SaxError', 'link-56');">SaxError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Unexpected element closed: "</tt> <tt class="py-op">+</tt> <tt class="py-name">el_tag</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.startElement"></a><div id="ElementTreeContentHandler.startElement-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.startElement-toggle" onclick="return toggle('ElementTreeContentHandler.startElement');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#startElement">startElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">attributes</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.startElement-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.startElement-expanded"><a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attributes</tt><tt class="py-op">:</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">k</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-57" class="py-name" targets="Variable lxml.tests.test_objectify.v=lxml.tests.test_objectify-module.html#v"><a title="lxml.tests.test_objectify.v" class="py-name" href="#" onclick="return doclink('link-57', 'v', 'link-57');">v</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt id="link-58" class="py-name"><a title="lxml.tests.test_objectify.v" class="py-name" href="#" onclick="return doclink('link-58', 'v', 'link-57');">v</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">attributes</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.etree._Element.items
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-59', 'items', 'link-38');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startElementNS()=lxml.sax.ElementTreeContentHandler-class.html#startElementNS"><a title="lxml.sax.ElementTreeContentHandler.startElementNS" class="py-name" href="#" onclick="return doclink('link-60', 'startElementNS', 'link-60');">startElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name" targets="Variable lxml.etree.DTD.name=lxml.etree.DTD-class.html#name,Variable lxml.etree._Entity.name=lxml.etree._Entity-class.html#name,Variable lxml.html.InputMixin.name=lxml.html.InputMixin-class.html#name,Variable lxml.objectify.PyType.name=lxml.objectify.PyType-class.html#name"><a title="lxml.etree.DTD.name
lxml.etree._Entity.name
lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-58', 'name', 'link-58');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-59" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-61', 'name', 'link-61');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="lxml.etree.DTD.name
lxml.etree._Entity.name
lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-59', 'name', 'link-58');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.endElement"></a><div id="ElementTreeContentHandler.endElement-def"><a name="L132"></a><tt class="py-lineno">132</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endElement-toggle" onclick="return toggle('ElementTreeContentHandler.endElement');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endElement">endElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.endElement-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endElement-expanded"><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endElementNS()=lxml.sax.ElementTreeContentHandler-class.html#endElementNS"><a title="lxml.sax.ElementTreeContentHandler.endElementNS" class="py-name" href="#" onclick="return doclink('link-60', 'endElementNS', 'link-60');">endElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-62', 'name', 'link-61');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">attributes</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.endElement"></a><div id="ElementTreeContentHandler.endElement-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.endElement-toggle" onclick="return toggle('ElementTreeContentHandler.endElement');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#endElement">endElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.endElement-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.endElement-expanded"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endElementNS()=lxml.sax.ElementTreeContentHandler-class.html#endElementNS"><a title="lxml.sax.ElementTreeContentHandler.endElementNS" class="py-name" href="#" onclick="return doclink('link-63', 'endElementNS', 'link-63');">endElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name"><a title="lxml.etree.DTD.name
lxml.etree._Entity.name
lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-61', 'name', 'link-58');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="lxml.etree.DTD.name
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-64', 'name', 'link-61');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-65" class="py-name"><a title="lxml.etree.DTD.name
lxml.etree._Entity.name
lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-62', 'name', 'link-58');">name</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeContentHandler.characters"></a><div id="ElementTreeContentHandler.characters-def"><a name="L135"></a><tt class="py-lineno">135</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.characters-toggle" onclick="return toggle('ElementTreeContentHandler.characters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#characters">characters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeContentHandler.characters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.characters-expanded"><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">last_element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-comment"># if there already is a child element, we must append to its tail</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">last_element</tt> <tt class="py-op">=</tt> <tt class="py-name">last_element</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Variable lxml.etree._Element.tail=lxml.etree._Element-class.html#tail,Variable xml.etree.ElementTree.Element.tail=xml.etree.ElementTree.Element-class.html#tail"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-63', 'tail', 'link-63');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-64', 'tail', 'link-63');">tail</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-65" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-65', 'data', 'link-48');">data</a></tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-comment"># otherwise: append to the text</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable lxml.etree.QName.text=lxml.etree.QName-class.html#text,Variable lxml.etree._Element.text=lxml.etree._Element-class.html#text,Variable lxml.etree._Entity.text=lxml.etree._Entity-class.html#text,Variable lxml.objectify.ObjectifiedElement.text=lxml.objectify.ObjectifiedElement-class.html#text,Variable xml.etree.ElementTree.Element.text=xml.etree.ElementTree.Element-class.html#text"><a title="lxml.etree.QName.text
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-65', 'name', 'link-61');">name</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeContentHandler.characters"></a><div id="ElementTreeContentHandler.characters-def"><a name="L140"></a><tt class="py-lineno">140</tt> <a class="py-toggle" href="#" id="ElementTreeContentHandler.characters-toggle" onclick="return toggle('ElementTreeContentHandler.characters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeContentHandler-class.html#characters">characters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeContentHandler.characters-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeContentHandler.characters-expanded"><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">last_element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element_stack</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-comment"># if there already is a child element, we must append to its tail</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">last_element</tt> <tt class="py-op">=</tt> <tt class="py-name">last_element</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Variable lxml.etree._Element.tail=lxml.etree._Element-class.html#tail,Variable xml.etree.ElementTree.Element.tail=xml.etree.ElementTree.Element-class.html#tail"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-66', 'tail', 'link-66');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-67', 'tail', 'link-66');">tail</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-68" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-68', 'data', 'link-48');">data</a></tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-comment"># otherwise: append to the text</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Variable lxml.etree.QName.text=lxml.etree.QName-class.html#text,Variable lxml.etree._Element.text=lxml.etree._Element-class.html#text,Variable lxml.etree._Entity.text=lxml.etree._Entity-class.html#text,Variable lxml.objectify.ObjectifiedElement.text=lxml.objectify.ObjectifiedElement-class.html#text,Variable xml.etree.ElementTree.Element.text=xml.etree.ElementTree.Element-class.html#text"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-66', 'text', 'link-66');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-69', 'text', 'link-69');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">last_element</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-67', 'text', 'link-66');">text</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-68" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-68', 'data', 'link-48');">data</a></tt> </tt>
-</div><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">ignorableWhitespace</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.characters()=lxml.sax.ElementTreeContentHandler-class.html#characters"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-69', 'characters', 'link-69');">characters</a></tt> </tt>
-</div><a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeProducer"></a><div id="ElementTreeProducer-def"><a name="L148"></a><tt class="py-lineno">148</tt> <a class="py-toggle" href="#" id="ElementTreeProducer-toggle" onclick="return toggle('ElementTreeProducer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html">ElementTreeProducer</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeProducer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ElementTreeProducer-expanded"><a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-docstring">"""Produces SAX events for an element and children.</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="ElementTreeProducer.__init__"></a><div id="ElementTreeProducer.__init__-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="ElementTreeProducer.__init__-toggle" onclick="return toggle('ElementTreeProducer.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-param">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeProducer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer.__init__-expanded"><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">element_or_tree</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method lxml.etree._ElementTree.getroot()=lxml.etree._ElementTree-class.html#getroot"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-70', 'getroot', 'link-70');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">element_or_tree</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">content_handler</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-71" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-71', 'xml', 'link-0');">xml</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-72', 'sax', 'link-1');">sax</a></tt><tt class="py-op">.</tt><tt class="py-name">xmlreader</tt> <tt class="py-keyword">import</tt> <tt class="py-name">AttributesNSImpl</tt> <tt class="py-keyword">as</tt> <tt class="py-name">attr_class</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attr_class</tt> <tt class="py-op">=</tt> <tt class="py-name">attr_class</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_empty_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attr_class</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeProducer.saxify"></a><div id="ElementTreeProducer.saxify-def"><a name="L162"></a><tt class="py-lineno">162</tt> <a class="py-toggle" href="#" id="ElementTreeProducer.saxify-toggle" onclick="return toggle('ElementTreeProducer.saxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#saxify">saxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeProducer.saxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer.saxify-expanded"><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startDocument()=lxml.sax.ElementTreeContentHandler-class.html#startDocument"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-73', 'startDocument', 'link-73');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element</tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-74" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-74', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'getprevious'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">siblings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Method lxml.etree._Element.getprevious()=lxml.etree._Element-class.html#getprevious"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-75', 'getprevious', 'link-75');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">siblings</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-76', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">)</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">sibling</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-77', 'getprevious', 'link-75');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">sibling</tt> <tt class="py-keyword">in</tt> <tt class="py-name">siblings</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method lxml.sax.ElementTreeProducer._recursive_saxify()=lxml.sax.ElementTreeProducer-class.html#_recursive_saxify"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-78', '_recursive_saxify', 'link-78');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-79', '_recursive_saxify', 'link-78');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-80" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-80', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'getnext'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method lxml.etree._Element.getnext()=lxml.etree._Element-class.html#getnext"><a title="lxml.etree._Element.getnext" class="py-name" href="#" onclick="return doclink('link-81', 'getnext', 'link-81');">getnext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-82', '_recursive_saxify', 'link-78');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">sibling</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="lxml.etree._Element.getnext" class="py-name" href="#" onclick="return doclink('link-83', 'getnext', 'link-81');">getnext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endDocument()=lxml.sax.ElementTreeContentHandler-class.html#endDocument"><a title="lxml.sax.ElementTreeContentHandler.endDocument" class="py-name" href="#" onclick="return doclink('link-84', 'endDocument', 'link-84');">endDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeProducer._recursive_saxify"></a><div id="ElementTreeProducer._recursive_saxify-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="ElementTreeProducer._recursive_saxify-toggle" onclick="return toggle('ElementTreeProducer._recursive_saxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#_recursive_saxify">_recursive_saxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">prefixes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeProducer._recursive_saxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer._recursive_saxify-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt id="link-85" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-70', 'text', 'link-69');">text</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-71" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-71', 'data', 'link-48');">data</a></tt> </tt>
+</div><a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">ignorableWhitespace</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.characters()=lxml.sax.ElementTreeContentHandler-class.html#characters"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-72', 'characters', 'link-72');">characters</a></tt> </tt>
+</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeProducer"></a><div id="ElementTreeProducer-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="ElementTreeProducer-toggle" onclick="return toggle('ElementTreeProducer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html">ElementTreeProducer</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeProducer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ElementTreeProducer-expanded"><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-docstring">"""Produces SAX events for an element and children.</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="ElementTreeProducer.__init__"></a><div id="ElementTreeProducer.__init__-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="ElementTreeProducer.__init__-toggle" onclick="return toggle('ElementTreeProducer.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-param">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeProducer.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer.__init__-expanded"><a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">element_or_tree</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method lxml.etree._ElementTree.getroot()=lxml.etree._ElementTree-class.html#getroot"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-73', 'getroot', 'link-73');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">element_or_tree</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">content_handler</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-74" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-74', 'xml', 'link-0');">xml</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-75', 'sax', 'link-1');">sax</a></tt><tt class="py-op">.</tt><tt class="py-name">xmlreader</tt> <tt class="py-keyword">import</tt> <tt class="py-name">AttributesNSImpl</tt> <tt class="py-keyword">as</tt> <tt class="py-name">attr_class</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attr_class</tt> <tt class="py-op">=</tt> <tt class="py-name">attr_class</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_empty_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">attr_class</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeProducer.saxify"></a><div id="ElementTreeProducer.saxify-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="ElementTreeProducer.saxify-toggle" onclick="return toggle('ElementTreeProducer.saxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#saxify">saxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeProducer.saxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer.saxify-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startDocument()=lxml.sax.ElementTreeContentHandler-class.html#startDocument"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-76', 'startDocument', 'link-76');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_element</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-77" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-77', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'getprevious'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">siblings</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method lxml.etree._Element.getprevious()=lxml.etree._Element-class.html#getprevious"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-78', 'getprevious', 'link-78');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">siblings</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-79', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">)</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">sibling</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-80', 'getprevious', 'link-78');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">sibling</tt> <tt class="py-keyword">in</tt> <tt class="py-name">siblings</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name" targets="Method lxml.sax.ElementTreeProducer._recursive_saxify()=lxml.sax.ElementTreeProducer-class.html#_recursive_saxify"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-81', '_recursive_saxify', 'link-81');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-82', '_recursive_saxify', 'link-81');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-83" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-83', 'hasattr', 'link-41');">hasattr</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">,</tt> <tt class="py-string">'getnext'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Method lxml.etree._Element.getnext()=lxml.etree._Element-class.html#getnext"><a title="lxml.etree._Element.getnext" class="py-name" href="#" onclick="return doclink('link-84', 'getnext', 'link-84');">getnext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-85', '_recursive_saxify', 'link-81');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">sibling</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">sibling</tt> <tt class="py-op">=</tt> <tt class="py-name">sibling</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="lxml.etree._Element.getnext" class="py-name" href="#" onclick="return doclink('link-86', 'getnext', 'link-84');">getnext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endDocument()=lxml.sax.ElementTreeContentHandler-class.html#endDocument"><a title="lxml.sax.ElementTreeContentHandler.endDocument" class="py-name" href="#" onclick="return doclink('link-87', 'endDocument', 'link-87');">endDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeProducer._recursive_saxify"></a><div id="ElementTreeProducer._recursive_saxify-def"><a name="L190"></a><tt class="py-lineno">190</tt> <a class="py-toggle" href="#" id="ElementTreeProducer._recursive_saxify-toggle" onclick="return toggle('ElementTreeProducer._recursive_saxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#_recursive_saxify">_recursive_saxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">prefixes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeProducer._recursive_saxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer._recursive_saxify-expanded"><a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_content_handler</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt id="link-88" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-85', 'tag', 'link-11');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-88', 'tag', 'link-11');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-86', 'tag', 'link-11');">tag</a></tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-87" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-89', 'tag', 'link-11');">tag</a></tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-90" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-87', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt id="link-88" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-88', 'Comment', 'link-10');">Comment</a></tt> <tt class="py-keyword">or</tt> <tt id="link-89" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-90', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt id="link-91" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-91', 'Comment', 'link-10');">Comment</a></tt> <tt class="py-keyword">or</tt> <tt id="link-92" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-89', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-90" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-92', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-93" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-90', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.processingInstruction()=lxml.sax.ElementTreeContentHandler-class.html#processingInstruction"><a title="lxml.sax.ElementTreeContentHandler.processingInstruction" class="py-name" href="#" onclick="return doclink('link-91', 'processingInstruction', 'link-91');">processingInstruction</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-92', 'target', 'link-47');">target</a></tt><tt class="py-op">,</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-93', 'tag', 'link-11');">tag</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">:</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.processingInstruction()=lxml.sax.ElementTreeContentHandler-class.html#processingInstruction"><a title="lxml.sax.ElementTreeContentHandler.processingInstruction" class="py-name" href="#" onclick="return doclink('link-94', 'processingInstruction', 'link-94');">processingInstruction</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-95', 'target', 'link-47');">target</a></tt><tt class="py-op">,</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-93', 'text', 'link-66');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-94', 'tail', 'link-63');">tail</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-95', 'characters', 'link-69');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-96', 'tail', 'link-63');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">new_prefixes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">build_qname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method lxml.sax.ElementTreeProducer._build_qname()=lxml.sax.ElementTreeProducer-class.html#_build_qname"><a title="lxml.sax.ElementTreeProducer._build_qname" class="py-name" href="#" onclick="return doclink('link-97', '_build_qname', 'link-97');">_build_qname</a></tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="lxml.etree._Attrib.items
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-96', 'text', 'link-69');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-97', 'tail', 'link-66');">tail</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-98', 'characters', 'link-72');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-99', 'tail', 'link-66');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">new_prefixes</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">build_qname</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method lxml.sax.ElementTreeProducer._build_qname()=lxml.sax.ElementTreeProducer-class.html#_build_qname"><a title="lxml.sax.ElementTreeProducer._build_qname" class="py-name" href="#" onclick="return doclink('link-100', '_build_qname', 'link-100');">_build_qname</a></tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">attribs</tt> <tt class="py-op">=</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="lxml.etree._Attrib.items
lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-98', 'items', 'link-38');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-name">attr_values</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">attr_qnames</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">attr_ns_name</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-101', 'items', 'link-38');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">attr_values</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">attr_qnames</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">attr_ns_name</tt><tt class="py-op">,</tt> <tt id="link-102" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-99', 'value', 'link-39');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">attr_ns_tuple</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name" targets="Function lxml.sax._getNsTag()=lxml.sax-module.html#_getNsTag"><a title="lxml.sax._getNsTag" class="py-name" href="#" onclick="return doclink('link-100', '_getNsTag', 'link-100');">_getNsTag</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_ns_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">attr_values</tt><tt class="py-op">[</tt><tt class="py-name">attr_ns_tuple</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-102', 'value', 'link-39');">value</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">attribs</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">attr_ns_tuple</tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name" targets="Function lxml.sax._getNsTag()=lxml.sax-module.html#_getNsTag"><a title="lxml.sax._getNsTag" class="py-name" href="#" onclick="return doclink('link-103', '_getNsTag', 'link-103');">_getNsTag</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_ns_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">attr_values</tt><tt class="py-op">[</tt><tt class="py-name">attr_ns_tuple</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-101', 'value', 'link-39');">value</a></tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">attr_qnames</tt><tt class="py-op">[</tt><tt class="py-name">attr_ns_tuple</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">build_qname</tt><tt class="py-op">(</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">attr_ns_tuple</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">attr_ns_tuple</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">,</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">)</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">sax_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attr_class</tt><tt class="py-op">(</tt><tt class="py-name">attr_values</tt><tt class="py-op">,</tt> <tt class="py-name">attr_qnames</tt><tt class="py-op">)</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">sax_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_empty_attributes</tt> </tt>
-<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt> <tt class="py-op">=</tt> <tt id="link-102" class="py-name"><a title="lxml.sax._getNsTag" class="py-name" href="#" onclick="return doclink('link-102', '_getNsTag', 'link-100');">_getNsTag</a></tt><tt class="py-op">(</tt><tt id="link-103" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-104', 'value', 'link-39');">value</a></tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">attr_qnames</tt><tt class="py-op">[</tt><tt class="py-name">attr_ns_tuple</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">build_qname</tt><tt class="py-op">(</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">attr_ns_tuple</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">attr_ns_tuple</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">,</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">sax_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_attr_class</tt><tt class="py-op">(</tt><tt class="py-name">attr_values</tt><tt class="py-op">,</tt> <tt class="py-name">attr_qnames</tt><tt class="py-op">)</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">sax_attributes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_empty_attributes</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt> <tt class="py-op">=</tt> <tt id="link-105" class="py-name"><a title="lxml.sax._getNsTag" class="py-name" href="#" onclick="return doclink('link-105', '_getNsTag', 'link-103');">_getNsTag</a></tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-103', 'tag', 'link-11');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-name">qname</tt> <tt class="py-op">=</tt> <tt class="py-name">build_qname</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">,</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">)</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-104" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-104', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-105" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-105', 'uri', 'link-25');">uri</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">:</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startPrefixMapping()=lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping"><a title="lxml.sax.ElementTreeContentHandler.startPrefixMapping" class="py-name" href="#" onclick="return doclink('link-106', 'startPrefixMapping', 'link-106');">startPrefixMapping</a></tt><tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-107', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-108" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-108', 'uri', 'link-25');">uri</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElementNS" class="py-name" href="#" onclick="return doclink('link-109', 'startElementNS', 'link-57');">startElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">qname</tt><tt class="py-op">,</tt> <tt class="py-name">sax_attributes</tt><tt class="py-op">)</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-106', 'tag', 'link-11');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">qname</tt> <tt class="py-op">=</tt> <tt class="py-name">build_qname</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">,</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-107" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-107', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-108" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-108', 'uri', 'link-25');">uri</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.startPrefixMapping()=lxml.sax.ElementTreeContentHandler-class.html#startPrefixMapping"><a title="lxml.sax.ElementTreeContentHandler.startPrefixMapping" class="py-name" href="#" onclick="return doclink('link-109', 'startPrefixMapping', 'link-109');">startPrefixMapping</a></tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-110', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-111" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-111', 'uri', 'link-25');">uri</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElementNS" class="py-name" href="#" onclick="return doclink('link-112', 'startElementNS', 'link-60');">startElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">qname</tt><tt class="py-op">,</tt> <tt class="py-name">sax_attributes</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-110', 'text', 'link-66');">text</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-111', 'characters', 'link-69');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-113', 'text', 'link-69');">text</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-114', 'characters', 'link-72');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-112', 'text', 'link-66');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">element</tt><tt class="py-op">:</tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-113', '_recursive_saxify', 'link-78');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">)</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElementNS" class="py-name" href="#" onclick="return doclink('link-114', 'endElementNS', 'link-60');">endElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">qname</tt><tt class="py-op">)</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-115" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-115', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-116" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-116', 'uri', 'link-25');">uri</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">:</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endPrefixMapping()=lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping"><a title="lxml.sax.ElementTreeContentHandler.endPrefixMapping" class="py-name" href="#" onclick="return doclink('link-117', 'endPrefixMapping', 'link-117');">endPrefixMapping</a></tt><tt class="py-op">(</tt><tt id="link-118" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-118', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-119', 'tail', 'link-63');">tail</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-120', 'characters', 'link-69');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-121', 'tail', 'link-63');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> </tt>
-<a name="ElementTreeProducer._build_qname"></a><div id="ElementTreeProducer._build_qname-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="ElementTreeProducer._build_qname-toggle" onclick="return toggle('ElementTreeProducer._build_qname');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#_build_qname">_build_qname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-param">local_name</tt><tt class="py-op">,</tt> <tt class="py-param">prefixes</tt><tt class="py-op">,</tt> <tt class="py-param">new_prefixes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeProducer._build_qname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer._build_qname-expanded"><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">local_name</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt id="link-122" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-122', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prefixes</tt><tt class="py-op">[</tt><tt class="py-name">ns_uri</tt><tt class="py-op">]</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt id="link-123" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-123', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prefixes</tt><tt class="py-op">[</tt><tt class="py-name">ns_uri</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'ns%02d'</tt> <tt class="py-op">%</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefixes</tt><tt class="py-op">)</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">new_prefixes</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-124', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt id="link-125" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-125', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns_uri</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-126" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-126', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">local_name</tt> </tt>
-</div></div><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
-<a name="saxify"></a><div id="saxify-def"><a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="saxify-toggle" onclick="return toggle('saxify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax-module.html#saxify">saxify</a><tt class="py-op">(</tt><tt class="py-param">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-param">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="saxify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="saxify-expanded"><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-docstring">"""One-shot helper to generate SAX events from an XML tree and fire</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> them against a SAX ContentHandler.</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-127" class="py-name" targets="Class lxml.sax.ElementTreeProducer=lxml.sax.ElementTreeProducer-class.html"><a title="lxml.sax.ElementTreeProducer" class="py-name" href="#" onclick="return doclink('link-127', 'ElementTreeProducer', 'link-127');">ElementTreeProducer</a></tt><tt class="py-op">(</tt><tt class="py-name">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-name">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method lxml.sax.ElementTreeProducer.saxify()=lxml.sax.ElementTreeProducer-class.html#saxify,Function lxml.sax.saxify()=lxml.sax-module.html#saxify"><a title="lxml.sax.ElementTreeProducer.saxify
-lxml.sax.saxify" class="py-name" href="#" onclick="return doclink('link-128', 'saxify', 'link-128');">saxify</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt><script type="text/javascript">
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-115', 'text', 'link-69');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">element</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="lxml.sax.ElementTreeProducer._recursive_saxify" class="py-name" href="#" onclick="return doclink('link-116', '_recursive_saxify', 'link-81');">_recursive_saxify</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">prefixes</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElementNS" class="py-name" href="#" onclick="return doclink('link-117', 'endElementNS', 'link-63');">endElementNS</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-name">local_name</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">qname</tt><tt class="py-op">)</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-118" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-118', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-119" class="py-name"><a title="lxml.tests.test_xpathevaluator.uri" class="py-name" href="#" onclick="return doclink('link-119', 'uri', 'link-25');">uri</a></tt> <tt class="py-keyword">in</tt> <tt class="py-name">new_prefixes</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name" targets="Method lxml.sax.ElementTreeContentHandler.endPrefixMapping()=lxml.sax.ElementTreeContentHandler-class.html#endPrefixMapping"><a title="lxml.sax.ElementTreeContentHandler.endPrefixMapping" class="py-name" href="#" onclick="return doclink('link-120', 'endPrefixMapping', 'link-120');">endPrefixMapping</a></tt><tt class="py-op">(</tt><tt id="link-121" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-121', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-122', 'tail', 'link-66');">tail</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">content_handler</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.characters" class="py-name" href="#" onclick="return doclink('link-123', 'characters', 'link-72');">characters</a></tt><tt class="py-op">(</tt><tt class="py-name">element</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-124', 'tail', 'link-66');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
+<a name="ElementTreeProducer._build_qname"></a><div id="ElementTreeProducer._build_qname-def"><a name="L233"></a><tt class="py-lineno">233</tt> <a class="py-toggle" href="#" id="ElementTreeProducer._build_qname-toggle" onclick="return toggle('ElementTreeProducer._build_qname');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax.ElementTreeProducer-class.html#_build_qname">_build_qname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">ns_uri</tt><tt class="py-op">,</tt> <tt class="py-param">local_name</tt><tt class="py-op">,</tt> <tt class="py-param">prefixes</tt><tt class="py-op">,</tt> <tt class="py-param">new_prefixes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeProducer._build_qname-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ElementTreeProducer._build_qname-expanded"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ns_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">local_name</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt id="link-125" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-125', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prefixes</tt><tt class="py-op">[</tt><tt class="py-name">ns_uri</tt><tt class="py-op">]</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt id="link-126" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-126', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-name">prefixes</tt><tt class="py-op">[</tt><tt class="py-name">ns_uri</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'ns%02d'</tt> <tt class="py-op">%</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">prefixes</tt><tt class="py-op">)</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">new_prefixes</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-127', 'append', 'link-27');">append</a></tt><tt class="py-op">(</tt> <tt class="py-op">(</tt><tt id="link-128" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-128', 'prefix', 'link-24');">prefix</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns_uri</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-129" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-129', 'prefix', 'link-24');">prefix</a></tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">local_name</tt> </tt>
+</div></div><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> </tt>
+<a name="saxify"></a><div id="saxify-def"><a name="L243"></a><tt class="py-lineno">243</tt> <a class="py-toggle" href="#" id="saxify-toggle" onclick="return toggle('saxify');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.sax-module.html#saxify">saxify</a><tt class="py-op">(</tt><tt class="py-param">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-param">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="saxify-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="saxify-expanded"><a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-docstring">"""One-shot helper to generate SAX events from an XML tree and fire</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> them against a SAX ContentHandler.</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-130" class="py-name" targets="Class lxml.sax.ElementTreeProducer=lxml.sax.ElementTreeProducer-class.html"><a title="lxml.sax.ElementTreeProducer" class="py-name" href="#" onclick="return doclink('link-130', 'ElementTreeProducer', 'link-130');">ElementTreeProducer</a></tt><tt class="py-op">(</tt><tt class="py-name">element_or_tree</tt><tt class="py-op">,</tt> <tt class="py-name">content_handler</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name" targets="Method lxml.sax.ElementTreeProducer.saxify()=lxml.sax.ElementTreeProducer-class.html#saxify,Function lxml.sax.saxify()=lxml.sax-module.html#saxify"><a title="lxml.sax.ElementTreeProducer.saxify
+lxml.sax.saxify" class="py-name" href="#" onclick="return doclink('link-131', 'saxify', 'link-131');">saxify</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:37 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:24 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:37 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:37 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="v"></a><span class="summary-name">v</span> = <code title="'double'"><code class="variable-quote">'</code><code class="variable-string">double</code><code class="variable-quote">'</code></code>
+ <a name="v"></a><span class="summary-name">v</span> = <code title="'boolean'"><code class="variable-quote">'</code><code class="variable-string">boolean</code><code class="variable-quote">'</code></code>
</td>
</tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
lxml.tests.test_xpathevaluator.tag
xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-163', 'tag', 'link-41');">tag</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
-<a name="ETreeSaxTestCase.test_etree_sax_error"></a><div id="ETreeSaxTestCase.test_etree_sax_error-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_error-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_error');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error">test_etree_sax_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeSaxTestCase.test_etree_sax_error-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_error-expanded"><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-164', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-165', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="ETreeSaxTestCase.test_etree_sax_no_ns_attributes"></a><div id="ETreeSaxTestCase.test_etree_sax_no_ns_attributes-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_no_ns_attributes-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_no_ns_attributes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns_attributes">test_etree_sax_no_ns_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase.test_etree_sax_no_ns_attributes-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_no_ns_attributes-expanded"><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-164', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-165', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-166', 'startDocument', 'link-78');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-167', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-168', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Class lxml.sax.SaxError=lxml.sax.SaxError-class.html"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-169', 'SaxError', 'link-169');">SaxError</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-170', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
-<a name="ETreeSaxTestCase.test_etree_sax_error2"></a><div id="ETreeSaxTestCase.test_etree_sax_error2-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_error2-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_error2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2">test_etree_sax_error2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeSaxTestCase.test_etree_sax_error2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_error2-expanded"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-171" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-171', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-172', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-173', 'startDocument', 'link-78');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-174', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-175', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-176" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-176', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-177', 'SaxError', 'link-169');">SaxError</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-178', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
-<a name="ETreeSaxTestCase._saxify_unsaxify"></a><div id="ETreeSaxTestCase._saxify_unsaxify-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase._saxify_unsaxify-toggle" onclick="return toggle('ETreeSaxTestCase._saxify_unsaxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_unsaxify">_saxify_unsaxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">saxifiable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeSaxTestCase._saxify_unsaxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase._saxify_unsaxify-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-179" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-179', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-180', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt id="link-181" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-181', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Class lxml.sax.ElementTreeProducer=lxml.sax.ElementTreeProducer-class.html"><a title="lxml.sax.ElementTreeProducer" class="py-name" href="#" onclick="return doclink('link-182', 'ElementTreeProducer', 'link-182');">ElementTreeProducer</a></tt><tt class="py-op">(</tt><tt class="py-name">saxifiable</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="lxml.sax.ElementTreeProducer.saxify
-lxml.sax.saxify" class="py-name" href="#" onclick="return doclink('link-183', 'saxify', 'link-54');">saxify</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="lxml.etree
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-167', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">"attr_a1"</tt><tt class="py-op">:</tt> <tt class="py-string">"a1"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-168', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">"attr_b1"</tt><tt class="py-op">:</tt> <tt class="py-string">"b1"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-169', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-170', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endDocument" class="py-name" href="#" onclick="return doclink('link-171', 'endDocument', 'link-89');">endDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">new_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-184', 'etree', 'link-90');">etree</a></tt> </tt>
-</div><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> </tt>
-<a name="ETreeSaxTestCase._saxify_serialize"></a><div id="ETreeSaxTestCase._saxify_serialize-def"><a name="L237"></a><tt class="py-lineno">237</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase._saxify_serialize-toggle" onclick="return toggle('ETreeSaxTestCase._saxify_serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_serialize">_saxify_serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeSaxTestCase._saxify_serialize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase._saxify_serialize-expanded"><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-name">new_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="lxml.tests.test_sax.ETreeSaxTestCase._saxify_unsaxify" class="py-name" href="#" onclick="return doclink('link-185', '_saxify_unsaxify', 'link-37');">_saxify_unsaxify</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">new_tree</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method lxml.etree._ElementTree.write()=lxml.etree._ElementTree-class.html#write"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-186', 'write', 'link-186');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name" targets="Method lxml.etree._Element.replace()=lxml.etree._Element-class.html#replace"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-187', 'replace', 'link-187');">replace</a></tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-188', '_bytes', 'link-11');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-189" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-189', '_bytes', 'link-11');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt>
-<a name="test_suite"></a><div id="test_suite-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="test_suite-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_suite-expanded"><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name" targets="Class lxml.tests.test_sax.ETreeSaxTestCase=lxml.tests.test_sax.ETreeSaxTestCase-class.html"><a title="lxml.tests.test_sax.ETreeSaxTestCase" class="py-name" href="#" onclick="return doclink('link-190', 'ETreeSaxTestCase', 'link-190');">ETreeSaxTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-191" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-191', 'make_doctest', 'link-10');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/sax.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
-</div><a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> </tt><script type="text/javascript">
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-172', 'etree', 'link-90');">etree</a></tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt id="link-173" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-173', 'root', 'link-38');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_tree</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-174', 'getroot', 'link-39');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt id="link-175" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-175', 'root', 'link-38');">root</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._Element.tag
+lxml.etree._Entity.tag
+lxml.etree._ProcessingInstruction.tag
+lxml.tests.test_xpathevaluator.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-176', 'tag', 'link-41');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt id="link-177" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-177', 'root', 'link-38');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._Element.tag
+lxml.etree._Entity.tag
+lxml.etree._ProcessingInstruction.tag
+lxml.tests.test_xpathevaluator.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-178', 'tag', 'link-41');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a1'</tt><tt class="py-op">,</tt> <tt id="link-179" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-179', 'root', 'link-38');">root</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Variable lxml.etree._Element.attrib=lxml.etree._Element-class.html#attrib,Variable lxml.etree._ProcessingInstruction.attrib=lxml.etree._ProcessingInstruction-class.html#attrib,Variable xml.etree.ElementTree.Element.attrib=xml.etree.ElementTree.Element-class.html#attrib"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-180', 'attrib', 'link-180');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"attr_a1"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b1'</tt><tt class="py-op">,</tt> <tt id="link-181" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-181', 'root', 'link-38');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-182', 'attrib', 'link-180');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"attr_b1"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> </tt>
+<a name="ETreeSaxTestCase.test_etree_sax_ns_attributes"></a><div id="ETreeSaxTestCase.test_etree_sax_ns_attributes-def"><a name="L235"></a><tt class="py-lineno">235</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_ns_attributes-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_ns_attributes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns_attributes">test_etree_sax_ns_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase.test_etree_sax_ns_attributes-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_ns_attributes-expanded"><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-183', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-184', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-185', 'startDocument', 'link-78');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">ValueError</tt><tt class="py-op">,</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-186', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">"blaA:attr_a1"</tt><tt class="py-op">:</tt> <tt class="py-string">"a1"</tt><tt class="py-op">}</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+</div><a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> </tt>
+<a name="ETreeSaxTestCase.test_etree_sax_error"></a><div id="ETreeSaxTestCase.test_etree_sax_error-def"><a name="L244"></a><tt class="py-lineno">244</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_error-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_error');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error">test_etree_sax_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase.test_etree_sax_error-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_error-expanded"><a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-187" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-187', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-188', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-189', 'startDocument', 'link-78');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-190', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-191" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-191', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name" targets="Class lxml.sax.SaxError=lxml.sax.SaxError-class.html"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-192', 'SaxError', 'link-192');">SaxError</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-193', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt>
+<a name="ETreeSaxTestCase.test_etree_sax_error2"></a><div id="ETreeSaxTestCase.test_etree_sax_error2-def"><a name="L250"></a><tt class="py-lineno">250</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase.test_etree_sax_error2-toggle" onclick="return toggle('ETreeSaxTestCase.test_etree_sax_error2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2">test_etree_sax_error2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase.test_etree_sax_error2-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase.test_etree_sax_error2-expanded"><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-194', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-195', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startDocument" class="py-name" href="#" onclick="return doclink('link-196', 'startDocument', 'link-78');">startDocument</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-197', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.startElement" class="py-name" href="#" onclick="return doclink('link-198', 'startElement', 'link-148');">startElement</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-199', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="lxml.sax.SaxError" class="py-name" href="#" onclick="return doclink('link-200', 'SaxError', 'link-192');">SaxError</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="lxml.sax.ElementTreeContentHandler.endElement" class="py-name" href="#" onclick="return doclink('link-201', 'endElement', 'link-150');">endElement</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt>
+<a name="ETreeSaxTestCase._saxify_unsaxify"></a><div id="ETreeSaxTestCase._saxify_unsaxify-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase._saxify_unsaxify-toggle" onclick="return toggle('ETreeSaxTestCase._saxify_unsaxify');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_unsaxify">_saxify_unsaxify</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">saxifiable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase._saxify_unsaxify-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase._saxify_unsaxify-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">handler</tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-202', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="lxml.sax.ElementTreeContentHandler" class="py-name" href="#" onclick="return doclink('link-203', 'ElementTreeContentHandler', 'link-77');">ElementTreeContentHandler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt id="link-204" class="py-name"><a title="lxml.sax" class="py-name" href="#" onclick="return doclink('link-204', 'sax', 'link-13');">sax</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name" targets="Class lxml.sax.ElementTreeProducer=lxml.sax.ElementTreeProducer-class.html"><a title="lxml.sax.ElementTreeProducer" class="py-name" href="#" onclick="return doclink('link-205', 'ElementTreeProducer', 'link-205');">ElementTreeProducer</a></tt><tt class="py-op">(</tt><tt class="py-name">saxifiable</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="lxml.sax.ElementTreeProducer.saxify
+lxml.sax.saxify" class="py-name" href="#" onclick="return doclink('link-206', 'saxify', 'link-54');">saxify</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">handler</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-207', 'etree', 'link-90');">etree</a></tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt>
+<a name="ETreeSaxTestCase._saxify_serialize"></a><div id="ETreeSaxTestCase._saxify_serialize-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="ETreeSaxTestCase._saxify_serialize-toggle" onclick="return toggle('ETreeSaxTestCase._saxify_serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#_saxify_serialize">_saxify_serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeSaxTestCase._saxify_serialize-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="ETreeSaxTestCase._saxify_serialize-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">new_tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="lxml.tests.test_sax.ETreeSaxTestCase._saxify_unsaxify" class="py-name" href="#" onclick="return doclink('link-208', '_saxify_unsaxify', 'link-37');">_saxify_unsaxify</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">new_tree</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method lxml.etree._ElementTree.write()=lxml.etree._ElementTree-class.html#write"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-209', 'write', 'link-209');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method lxml.etree._Element.replace()=lxml.etree._Element-class.html#replace"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-210', 'replace', 'link-210');">replace</a></tt><tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-211', '_bytes', 'link-11');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-212" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-212', '_bytes', 'link-11');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> </tt>
+<a name="test_suite"></a><div id="test_suite-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_sax-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="test_suite-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="test_suite-expanded"><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-213" class="py-name" targets="Class lxml.tests.test_sax.ETreeSaxTestCase=lxml.tests.test_sax.ETreeSaxTestCase-class.html"><a title="lxml.tests.test_sax.ETreeSaxTestCase" class="py-name" href="#" onclick="return doclink('link-213', 'ETreeSaxTestCase', 'link-213');">ETreeSaxTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-214" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-214', 'make_doctest', 'link-10');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/sax.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
+</div><a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
</tr>
</table>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="test_etree_sax_no_ns_attributes"></a><span class="summary-sig-name">test_etree_sax_no_ns_attributes</span>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lxml.tests.test_sax-pysrc.html#ETreeSaxTestCase.test_etree_sax_no_ns_attributes">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="test_etree_sax_ns_attributes"></a><span class="summary-sig-name">test_etree_sax_ns_attributes</span>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lxml.tests.test_sax-pysrc.html#ETreeSaxTestCase.test_etree_sax_ns_attributes">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
</td>
</tr>
<tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
est, (None, 'setTest'): setTest, (None, 'setTest2'): setTest2, (None, \
'argsTest1'): argsTest1, (None, 'argsTest2'): argsTest2, (None, 'resul\
tTypesTest'): resultTypesTest, (None, 'resultTypesTest2'): resultTypes\
-Test2,}"><code class="variable-group">{</code><code class="variable-group">(</code>None<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">argsTest1</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">: </code><function argsTest1 at 0x459<code class="variable-ellipsis">...</code></code>
+Test2,}"><code class="variable-group">{</code><code class="variable-group">(</code>None<code class="variable-op">, </code><code class="variable-quote">'</code><code class="variable-string">argsTest1</code><code class="variable-quote">'</code><code class="variable-group">)</code><code class="variable-op">: </code><function argsTest1 at 0x2f7<code class="variable-ellipsis">...</code></code>
</td>
</tr>
<tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_input"></a><div id="ETreeXSLTTestCase.test_xslt_input-def"><a name="L201"></a><tt class="py-lineno"> 201</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_input-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_input');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input">test_xslt_input</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_input-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_input-expanded"><a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> <tt id="link-105" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-105', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="ETreeXSLTTestCase.test_xslt_unicode_standalone"></a><div id="ETreeXSLTTestCase.test_xslt_unicode_standalone-def"><a name="L201"></a><tt class="py-lineno"> 201</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_unicode_standalone-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_unicode_standalone');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_unicode_standalone">test_xslt_unicode_standalone</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_unicode_standalone-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_unicode_standalone-expanded"><a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-106', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"> </tt>
-<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-105', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-106', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>\\uF8D2</b><c>\\uF8D2</c></a>'</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"unicode_escape"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> <tt id="link-107" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-107', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-108', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"><tt class="py-string"> <xsl:output encoding="UTF-16" standalone="no"/></tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-109', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-110', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-111" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-111', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-112" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-112', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0" standalone="no"?></tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"><tt class="py-string"><foo>\\uF8D2</foo></tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"unicode_escape"</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_input"></a><div id="ETreeXSLTTestCase.test_xslt_input-def"><a name="L222"></a><tt class="py-lineno"> 222</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_input-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_input');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input">test_xslt_input</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_input-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_input-expanded"><a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"> <tt id="link-113" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-113', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-114', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-107', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-108', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-109" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-109', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-110" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-115', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-116', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-117" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-117', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-110', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-111', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-112" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-112', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method lxml.etree._ElementTree.getroot()=lxml.etree._ElementTree-class.html#getroot"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-113', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_input_partial_doc"></a><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-def"><a name="L214"></a><tt class="py-lineno"> 214</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_input_partial_doc-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_input_partial_doc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc">test_xslt_input_partial_doc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-expanded"><a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt id="link-114" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-114', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-118', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-119', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-120" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-120', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method lxml.etree._ElementTree.getroot()=lxml.etree._ElementTree-class.html#getroot"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-121', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_input_partial_doc"></a><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-def"><a name="L235"></a><tt class="py-lineno"> 235</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_input_partial_doc-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_input_partial_doc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_input_partial_doc">test_xslt_input_partial_doc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_input_partial_doc-expanded"><a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"> <tt id="link-122" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-122', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-115', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"><tt class="py-string"><otherroot></tt> </tt>
-<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"><tt class="py-string"></otherroot>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"> </tt>
-<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-116" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-123', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"><tt class="py-string"><otherroot></tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-string"></otherroot>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-116', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-117', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-118" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-124', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-125', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-126" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-118', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-119', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-120" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-120', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"> <tt class="py-name">root_node</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-121', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-122', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-123" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-126', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-127', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-128" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-128', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"> <tt class="py-name">root_node</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-129', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-130', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-131" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-123', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-124', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-125" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-131', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-132', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> <tt id="link-133" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-125', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-126', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt class="py-name">root_node</tt><tt class="py-op">)</tt> </tt>
-<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-133', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-134', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt class="py-name">root_node</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-127', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-128', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">root_node</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_broken"></a><div id="ETreeXSLTTestCase.test_xslt_broken-def"><a name="L231"></a><tt class="py-lineno"> 231</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_broken-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_broken');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken">test_xslt_broken</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_broken-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_broken-expanded"><a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-135', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-136', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">root_node</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_broken"></a><div id="ETreeXSLTTestCase.test_xslt_broken-def"><a name="L252"></a><tt class="py-lineno"> 252</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_broken-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_broken');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken">test_xslt_broken</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_broken-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_broken-expanded"><a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-129', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt id="link-130" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-130', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-137', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-138', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-131', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"><tt class="py-string"> <xsl:foo /></tt> </tt>
-<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-132" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-139', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"><tt class="py-string"> <xsl:foo /></tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-140" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-132', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-133', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"> <tt id="link-134" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-140', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="lxml.etree.XSLTParseError" class="py-name" href="#" onclick="return doclink('link-141', 'XSLTParseError', 'link-43');">XSLTParseError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"> <tt id="link-142" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-134', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-135', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-136', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_parameters-def"><a name="L241"></a><tt class="py-lineno"> 241</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters">test_xslt_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameters-expanded"><a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-142', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-143', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-144', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_parameters-def"><a name="L262"></a><tt class="py-lineno"> 262</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameters">test_xslt_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameters-expanded"><a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-137', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-138', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-145', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"> <tt id="link-146" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-146', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-139', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> </tt>
-<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-147', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-140', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-141', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-142" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-142', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">)</tt> </tt>
-<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo></tt> </tt>
-<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"> <tt id="link-143" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-143', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_string_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_string_parameters-def"><a name="L259"></a><tt class="py-lineno"> 259</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_string_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_string_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_string_parameters">test_xslt_string_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_string_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_string_parameters-expanded"><a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-148', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-149', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-150" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-150', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo></tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> <tt id="link-151" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-151', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_string_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_string_parameters-def"><a name="L280"></a><tt class="py-lineno"> 280</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_string_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_string_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_string_parameters">test_xslt_string_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_string_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_string_parameters-expanded"><a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-144', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"> <tt id="link-145" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-145', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-152', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"> <tt id="link-153" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-153', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-146', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"> </tt>
-<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-154', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-147', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-148', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-149" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-149', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-150" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-155', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-156', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-157" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-157', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-158" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-150', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-151', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Static Method lxml.etree.XSLT.strparam()=lxml.etree.XSLT-class.html#strparam"><a title="lxml.etree.XSLT.strparam" class="py-name" href="#" onclick="return doclink('link-152', 'strparam', 'link-152');">strparam</a></tt><tt class="py-op">(</tt><tt class="py-string">'''it's me, "Bar"'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-string"><foo>it's me, "Bar"</foo></tt> </tt>
-<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"> <tt id="link-153" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-153', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_parameter_invalid"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_invalid-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_invalid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid">test_xslt_parameter_invalid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-expanded"><a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-158', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-159', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Static Method lxml.etree.XSLT.strparam()=lxml.etree.XSLT-class.html#strparam"><a title="lxml.etree.XSLT.strparam" class="py-name" href="#" onclick="return doclink('link-160', 'strparam', 'link-160');">strparam</a></tt><tt class="py-op">(</tt><tt class="py-string">'''it's me, "Bar"'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"><tt class="py-string"><foo>it's me, "Bar"</foo></tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-161', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_invalid"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-def"><a name="L298"></a><tt class="py-lineno"> 298</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_invalid-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_invalid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid">test_xslt_parameter_invalid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_invalid-expanded"><a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-154', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt id="link-155" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-155', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-162', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt id="link-163" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-163', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-156', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"><tt class="py-string"> <xsl:param name="bar"/></tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"> </tt>
-<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-157" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-164', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"><tt class="py-string"> <xsl:param name="bar"/></tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-157', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-158', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-159" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-159', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-160" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-165', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-166', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-167" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-167', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-168" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-160', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-161" class="py-name" targets="Class lxml.etree.XSLTApplyError=lxml.etree.XSLTApplyError-class.html"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-161', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"<test/>"</tt><tt class="py-op">)</tt> </tt>
-<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-168', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Class lxml.etree.XSLTApplyError=lxml.etree.XSLTApplyError-class.html"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-169', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"<test/>"</tt><tt class="py-op">)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-170" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-162', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-163', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"...."</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-164" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-170', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-171', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"...."</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-172" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-164', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-165', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">18</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> <tt class="py-comment"># later versions produce no error</tt> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_parameter_missing"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-def"><a name="L296"></a><tt class="py-lineno"> 296</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_missing-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_missing');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_missing">test_xslt_parameter_missing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-expanded"><a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-comment"># apply() without needed parameter will lead to XSLTApplyError</tt> </tt>
-<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-172', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-173', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op"><</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">18</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> <tt class="py-comment"># later versions produce no error</tt> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_missing"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-def"><a name="L317"></a><tt class="py-lineno"> 317</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_missing-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_missing');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_missing">test_xslt_parameter_missing</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_missing-expanded"><a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-comment"># apply() without needed parameter will lead to XSLTApplyError</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-166', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt id="link-167" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-167', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-174', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt id="link-175" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-175', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-168', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"> </tt>
-<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-176', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-177" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-169', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-170', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-171" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-171', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-172" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-177', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-178', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-179" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-179', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-172', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-173', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method lxml.etree.XSLT.apply()=lxml.etree.XSLT-class.html#apply"><a title="lxml.etree.XSLT.apply" class="py-name" href="#" onclick="return doclink('link-174', 'apply', 'link-174');">apply</a></tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_multiple_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-def"><a name="L311"></a><tt class="py-lineno"> 311</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_multiple_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_multiple_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters">test_xslt_multiple_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-expanded"><a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-180', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-181', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> <tt class="py-name">st</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method lxml.etree.XSLT.apply()=lxml.etree.XSLT-class.html#apply"><a title="lxml.etree.XSLT.apply" class="py-name" href="#" onclick="return doclink('link-182', 'apply', 'link-182');">apply</a></tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_multiple_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-def"><a name="L332"></a><tt class="py-lineno"> 332</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_multiple_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_multiple_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters">test_xslt_multiple_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_multiple_parameters-expanded"><a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-175', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-176', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-183', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"> <tt id="link-184" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-184', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-177', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$baz" /></foo></tt> </tt>
-<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"> </tt>
-<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-185', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$baz" /></foo></tt> </tt>
+<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-178', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-179', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-180', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"'Baz'"</tt><tt class="py-op">)</tt> </tt>
-<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo><foo>Baz</foo></tt> </tt>
-<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> <tt id="link-181" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-181', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_parameter_xpath"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-def"><a name="L331"></a><tt class="py-lineno"> 331</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_xpath-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_xpath');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath">test_xslt_parameter_xpath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-expanded"><a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-186', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-187', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-188" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-188', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"'Baz'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo><foo>Baz</foo></tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"> <tt id="link-189" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-189', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_xpath"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-def"><a name="L352"></a><tt class="py-lineno"> 352</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_xpath-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_xpath');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath">test_xslt_parameter_xpath</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath-expanded"><a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-182', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"> <tt id="link-183" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-183', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-190', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> <tt id="link-191" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-191', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-184', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-185" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-192', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-185', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-186', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-187', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"/a/b/text()"</tt><tt class="py-op">)</tt> </tt>
-<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"> <tt id="link-188" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-188', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_parameter_xpath_object"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-def"><a name="L350"></a><tt class="py-lineno"> 350</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_xpath_object');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object">test_xslt_parameter_xpath_object</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-expanded"><a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-193', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-194', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-195" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-195', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"/a/b/text()"</tt><tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"> <tt id="link-196" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-196', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_parameter_xpath_object"></a><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-def"><a name="L371"></a><tt class="py-lineno"> 371</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_parameter_xpath_object');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath_object">test_xslt_parameter_xpath_object</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_parameter_xpath_object-expanded"><a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-189', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"> <tt id="link-190" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-190', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-197', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"> <tt id="link-198" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-198', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-191', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-199', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-192', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-193', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-194', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-195" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-200', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-201', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-202" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-202', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt id="link-203" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-195', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name" targets="Class lxml.etree.XPath=lxml.etree.XPath-class.html"><a title="lxml.etree.XPath" class="py-name" href="#" onclick="return doclink('link-196', 'XPath', 'link-196');">XPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"/a/b/text()"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"> <tt id="link-197" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-197', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_default_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_default_parameters-def"><a name="L369"></a><tt class="py-lineno"> 369</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_default_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_default_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_default_parameters">test_xslt_default_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_default_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_default_parameters-expanded"><a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-203', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Class lxml.etree.XPath=lxml.etree.XPath-class.html"><a title="lxml.etree.XPath" class="py-name" href="#" onclick="return doclink('link-204', 'XPath', 'link-204');">XPath</a></tt><tt class="py-op">(</tt><tt class="py-string">"/a/b/text()"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"> <tt id="link-205" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-205', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_default_parameters"></a><div id="ETreeXSLTTestCase.test_xslt_default_parameters-def"><a name="L390"></a><tt class="py-lineno"> 390</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_default_parameters-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_default_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_default_parameters">test_xslt_default_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_default_parameters-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_default_parameters-expanded"><a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-198', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt id="link-199" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-199', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-206', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> <tt id="link-207" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-207', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-200', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"><tt class="py-string"> <xsl:param name="bar" select="'Default'" /></tt> </tt>
-<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> </tt>
-<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-208', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-string"> <xsl:param name="bar" select="'Default'" /></tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-201', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-202', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-203" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-203', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">)</tt> </tt>
-<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo></tt> </tt>
-<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"> <tt id="link-204" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-204', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-string"><foo>Default</foo></tt> </tt>
-<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> <tt id="link-205" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-205', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_html_output"></a><div id="ETreeXSLTTestCase.test_xslt_html_output-def"><a name="L395"></a><tt class="py-lineno"> 395</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_html_output-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_html_output');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_html_output">test_xslt_html_output</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_html_output-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_html_output-expanded"><a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-209', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-210', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-211', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-string"><foo>Bar</foo></tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"> <tt id="link-212" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-212', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"><tt class="py-string"><foo>Default</foo></tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"> <tt id="link-213" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-213', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_html_output"></a><div id="ETreeXSLTTestCase.test_xslt_html_output-def"><a name="L416"></a><tt class="py-lineno"> 416</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_html_output-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_html_output');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_html_output">test_xslt_html_output</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_html_output-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_html_output-expanded"><a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-206', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"> <tt id="link-207" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-207', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-214', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"> <tt id="link-215" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-215', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-208', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-string"> <xsl:output method="html"/></tt> </tt>
-<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"><tt class="py-string"> <xsl:strip-space elements="*"/></tt> </tt>
-<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"><tt class="py-string"> <html><body><xsl:value-of select="/a/b/text()" /></body></html></tt> </tt>
-<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"> </tt>
-<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-216', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"><tt class="py-string"> <xsl:output method="html"/></tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"><tt class="py-string"> <xsl:strip-space elements="*"/></tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"><tt class="py-string"> <html><body><xsl:value-of select="/a/b/text()" /></body></html></tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"> </tt>
+<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-217" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-209', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-210', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-211', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'<html><body>B</body></html>'</tt><tt class="py-op">,</tt> </tt>
-<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"> <tt id="link-212" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-212', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name" targets="Function lxml.doctestcompare.strip()=lxml.doctestcompare-module.html#strip"><a title="lxml.doctestcompare.strip" class="py-name" href="#" onclick="return doclink('link-213', 'strip', 'link-213');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_include"></a><div id="ETreeXSLTTestCase.test_xslt_include-def"><a name="L412"></a><tt class="py-lineno"> 412</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_include-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_include');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include">test_xslt_include</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_include-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_include-expanded"><a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-217', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-218', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-219" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-219', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'<html><body>B</body></html>'</tt><tt class="py-op">,</tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"> <tt id="link-220" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-220', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Function lxml.doctestcompare.strip()=lxml.doctestcompare-module.html#strip"><a title="lxml.doctestcompare.strip" class="py-name" href="#" onclick="return doclink('link-221', 'strip', 'link-221');">strip</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_include"></a><div id="ETreeXSLTTestCase.test_xslt_include-def"><a name="L433"></a><tt class="py-lineno"> 433</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_include-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_include');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include">test_xslt_include</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_include-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_include-expanded"><a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-222" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-214', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-222', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-215', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-216" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-216', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-217" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-223', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-224', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-225" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-217', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-218', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_include_from_filelike"></a><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-def"><a name="L416"></a><tt class="py-lineno"> 416</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_include_from_filelike-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_include_from_filelike');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include_from_filelike">test_xslt_include_from_filelike</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-expanded"><a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-219" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-219', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-225', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-226', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_include_from_filelike"></a><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-def"><a name="L437"></a><tt class="py-lineno"> 437</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_include_from_filelike-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_include_from_filelike');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include_from_filelike">test_xslt_include_from_filelike</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_include_from_filelike-expanded"><a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-227" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-227', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test1.xslt'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-228" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-220', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-228', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-221', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name" targets="Method lxml.etree.TreeBuilder.close()=lxml.etree.TreeBuilder-class.html#close,Method lxml.etree._FeedParser.close()=lxml.etree._FeedParser-class.html#close"><a title="lxml.etree.TreeBuilder.close
-lxml.etree._FeedParser.close" class="py-name" href="#" onclick="return doclink('link-222', 'close', 'link-222');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-223" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-229', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name" targets="Method lxml.etree.TreeBuilder.close()=lxml.etree.TreeBuilder-class.html#close,Method lxml.etree._FeedParser.close()=lxml.etree._FeedParser-class.html#close"><a title="lxml.etree.TreeBuilder.close
+lxml.etree._FeedParser.close" class="py-name" href="#" onclick="return doclink('link-230', 'close', 'link-230');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-231" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-223', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-224', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_multiple_transforms"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-def"><a name="L422"></a><tt class="py-lineno"> 422</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_multiple_transforms-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_multiple_transforms');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms">test_xslt_multiple_transforms</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-expanded"><a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"> <tt id="link-225" class="py-name" targets="Variable lxml.tests.test_threading.ThreadPipelineTestCase.xml=lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-225', 'xml', 'link-225');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<a/>'</tt> </tt>
-<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> <tt id="link-226" class="py-name" targets="Method lxml.etree._ElementTree.xslt()=lxml.etree._ElementTree-class.html#xslt"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-226', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
-<a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
-<a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"><tt class="py-string"> <response>Some text</response></tt> </tt>
-<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-string">'''</tt> </tt>
-<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-231', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-232', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_multiple_transforms"></a><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-def"><a name="L443"></a><tt class="py-lineno"> 443</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_multiple_transforms-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_multiple_transforms');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_transforms">test_xslt_multiple_transforms</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_multiple_transforms-expanded"><a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> <tt id="link-233" class="py-name" targets="Variable lxml.tests.test_threading.ThreadPipelineTestCase.xml=lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-233', 'xml', 'link-233');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<a/>'</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"> <tt id="link-234" class="py-name" targets="Method lxml.etree._ElementTree.xslt()=lxml.etree._ElementTree-class.html#xslt"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-234', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"><tt class="py-string"> <response>Some text</response></tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-227', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-228" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-228', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-235', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-236" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-236', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-229', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-230" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-230', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"> <tt id="link-231" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-231', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-237', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-238" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-238', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt id="link-239" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-239', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-240" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-232', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-233', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-234" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-234', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"> </tt>
-<a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"> <tt id="link-235" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-240', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-241', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-242" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-242', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt id="link-243" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-235', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Method lxml.etree.XSLT.tostring()=lxml.etree.XSLT-class.html#tostring,Function lxml.etree.tostring()=lxml.etree-module.html#tostring"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-236', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-237', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"> </tt>
-<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-243', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name" targets="Method lxml.etree.XSLT.tostring()=lxml.etree.XSLT-class.html#tostring,Function lxml.etree.tostring()=lxml.etree-module.html#tostring"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-244', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-245', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-238', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-239', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-246', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-247" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-247', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-240', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-241" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-241', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt id="link-242" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-242', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-243" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-248', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-249" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-249', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> <tt id="link-250" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-250', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-251" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-243', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-244', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-245" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-245', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"> </tt>
-<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"> <tt id="link-246" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-251', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-252" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-252', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-253" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-253', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"> <tt id="link-254" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-246', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-247', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-248" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-248', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_repeat_transform"></a><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-def"><a name="L445"></a><tt class="py-lineno"> 445</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_repeat_transform-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_repeat_transform');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_repeat_transform">test_xslt_repeat_transform</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-expanded"><a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"> <tt id="link-249" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-249', 'xml', 'link-225');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<a/>'</tt> </tt>
-<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> <tt id="link-250" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-250', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
-<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
-<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"><tt class="py-string"> <response>Some text</response></tt> </tt>
-<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"><tt class="py-string">'''</tt> </tt>
-<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-251" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-254', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-255', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-256', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_repeat_transform"></a><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-def"><a name="L466"></a><tt class="py-lineno"> 466</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_repeat_transform-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_repeat_transform');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_repeat_transform">test_xslt_repeat_transform</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_repeat_transform-expanded"><a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> <tt id="link-257" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-257', 'xml', 'link-233');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<a/>'</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> <tt id="link-258" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-258', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''\</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"><tt class="py-string"> <response>Some text</response></tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-string">'''</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-251', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-252" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-252', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-259', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-260" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-260', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-253', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-254" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-254', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"> <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-255" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-261', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-262" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-262', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"> <tt class="py-name">transform</tt> <tt class="py-op">=</tt> <tt id="link-263" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-255', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-256', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"> <tt id="link-257" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-263', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-264', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"> <tt id="link-265" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-257', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-258', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-259', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"> <tt id="link-260" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-265', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-266" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-266', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-267', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> <tt id="link-268" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-260', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-261', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-262', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"> <tt id="link-263" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-263', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"> </tt>
-<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"> <tt class="py-name">result1</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"> <tt class="py-name">result2</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-264" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-264', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-265" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-265', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> <tt id="link-266" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-266', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_empty"></a><div id="ETreeXSLTTestCase.test_xslt_empty-def"><a name="L470"></a><tt class="py-lineno"> 470</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_empty-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_empty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_empty">test_xslt_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_empty-expanded"><a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"> <tt class="py-comment"># could segfault if result contains "empty document"</tt> </tt>
-<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"> <tt id="link-267" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-267', 'xml', 'link-225');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
-<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"> <tt id="link-268" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-268', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
-<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
-<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/" /></tt> </tt>
-<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
-<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
-<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"> </tt>
-<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-268', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-269" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-269', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-270', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"> <tt id="link-271" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-271', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"> <tt class="py-name">result1</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"> <tt class="py-name">result2</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-272', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-273" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-273', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">transform</tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> <tt id="link-274" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-274', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_empty"></a><div id="ETreeXSLTTestCase.test_xslt_empty-def"><a name="L491"></a><tt class="py-lineno"> 491</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_empty-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_empty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_empty">test_xslt_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_empty-expanded"><a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-comment"># could segfault if result contains "empty document"</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt id="link-275" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-275', 'xml', 'link-233');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> <tt id="link-276" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-276', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/" /></tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-269', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-270" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-270', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-277', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-278" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-278', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-271', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-272', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"> <tt id="link-273" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-273', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-274" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-279', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-280" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-280', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt id="link-281" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-281', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-282" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-274', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-275" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-275', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-276" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-276', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-277" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-277', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_message"></a><div id="ETreeXSLTTestCase.test_xslt_message-def"><a name="L485"></a><tt class="py-lineno"> 485</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_message-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message">test_xslt_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_message-expanded"><a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"> <tt id="link-278" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-278', 'xml', 'link-225');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
-<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> <tt id="link-279" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-279', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
-<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"><tt class="py-string"> <xsl:message>TEST TEST TEST</xsl:message></tt> </tt>
-<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
-<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> </tt>
-<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-282', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-283', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-284" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-284', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-285" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-285', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_message"></a><div id="ETreeXSLTTestCase.test_xslt_message-def"><a name="L506"></a><tt class="py-lineno"> 506</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_message-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message">test_xslt_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_message-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_message-expanded"><a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt id="link-286" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-286', 'xml', 'link-233');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> <tt id="link-287" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-287', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-string"> <xsl:message>TEST TEST TEST</xsl:message></tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-288" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-280', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-281" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-281', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-288', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-289" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-289', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-290" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-282', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-283" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-283', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"> <tt id="link-284" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-284', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-285" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-290', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-291" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-291', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> <tt id="link-292" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-292', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-293" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-285', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-286" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-286', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-287" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-287', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-288" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-288', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name" targets="Variable lxml.etree._LogEntry.message=lxml.etree._LogEntry-class.html#message"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-289', 'message', 'link-289');">message</a></tt> </tt>
-<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-290" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-290', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-291" class="py-name" targets="Variable lxml.etree.XInclude.error_log=lxml.etree.XInclude-class.html#error_log,Variable lxml.etree.XSLT.error_log=lxml.etree.XSLT-class.html#error_log,Variable lxml.etree._Validator.error_log=lxml.etree._Validator-class.html#error_log,Variable lxml.etree._XPathEvaluatorBase.error_log=lxml.etree._XPathEvaluatorBase-class.html#error_log,Variable lxml.etree.iterparse.error_log=lxml.etree.iterparse-class.html#error_log"><a title="lxml.etree.XInclude.error_log
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-293', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-294', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-295" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-295', 'style', 'link-24');">style</a></tt><tt class="py-op">(</tt><tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt id="link-296" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-296', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-297" class="py-name" targets="Variable lxml.etree._LogEntry.message=lxml.etree._LogEntry-class.html#message"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-297', 'message', 'link-297');">message</a></tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-298" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-298', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-299" class="py-name" targets="Variable lxml.etree.XInclude.error_log=lxml.etree.XInclude-class.html#error_log,Variable lxml.etree.XSLT.error_log=lxml.etree.XSLT-class.html#error_log,Variable lxml.etree._Validator.error_log=lxml.etree._Validator-class.html#error_log,Variable lxml.etree._XPathEvaluatorBase.error_log=lxml.etree._XPathEvaluatorBase-class.html#error_log,Variable lxml.etree.iterparse.error_log=lxml.etree.iterparse-class.html#error_log"><a title="lxml.etree.XInclude.error_log
lxml.etree.XSLT.error_log
lxml.etree._Validator.error_log
lxml.etree._XPathEvaluatorBase.error_log
-lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-291', 'error_log', 'link-291');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_message_terminate"></a><div id="ETreeXSLTTestCase.test_xslt_message_terminate-def"><a name="L503"></a><tt class="py-lineno"> 503</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_message_terminate-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_message_terminate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message_terminate">test_xslt_message_terminate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_message_terminate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_message_terminate-expanded"><a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt id="link-292" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-292', 'xml', 'link-225');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
-<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt id="link-293" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-293', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
-<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
-<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"><tt class="py-string"> <xsl:message terminate="yes">TEST TEST TEST</xsl:message></tt> </tt>
-<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
-<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
-<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"> </tt>
-<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-294" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-299', 'error_log', 'link-299');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_message_terminate"></a><div id="ETreeXSLTTestCase.test_xslt_message_terminate-def"><a name="L524"></a><tt class="py-lineno"> 524</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_message_terminate-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_message_terminate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_message_terminate">test_xslt_message_terminate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_message_terminate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_message_terminate-expanded"><a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt id="link-300" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-300', 'xml', 'link-233');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'<blah/>'</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"> <tt id="link-301" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-301', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"></tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-string"> <xsl:message terminate="yes">TEST TEST TEST</xsl:message></tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-string"> '''</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> <tt class="py-name">source</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-294', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-295" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-295', 'xml', 'link-225');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-296" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-302', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-303" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-303', 'xml', 'link-233');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> <tt class="py-name">styledoc</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-296', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-297" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-297', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> <tt id="link-298" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-298', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-299" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-304', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-305', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt id="link-306" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-306', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt id="link-307" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-299', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-300', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
-<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> </tt>
-<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-301" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-307', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-308', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">styledoc</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-309" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-301', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-302', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-303" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-303', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
-<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-304" class="py-name"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-304', 'message', 'link-289');">message</a></tt> </tt>
-<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-305" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-305', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="lxml.etree.XInclude.error_log
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-309', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-310', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-311" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-311', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">source</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"TEST TEST TEST"</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">entry</tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="lxml.etree._LogEntry.message" class="py-name" href="#" onclick="return doclink('link-312', 'message', 'link-297');">message</a></tt> </tt>
+<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">entry</tt> <tt class="py-keyword">in</tt> <tt id="link-313" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-313', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="lxml.etree.XInclude.error_log
lxml.etree.XSLT.error_log
lxml.etree._Validator.error_log
lxml.etree._XPathEvaluatorBase.error_log
-lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-306', 'error_log', 'link-291');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_shortcut"></a><div id="ETreeXSLTTestCase.test_xslt_shortcut-def"><a name="L521"></a><tt class="py-lineno"> 521</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_shortcut-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_shortcut');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_shortcut">test_xslt_shortcut</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_shortcut-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_shortcut-expanded"><a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.iterparse.error_log" class="py-name" href="#" onclick="return doclink('link-314', 'error_log', 'link-299');">error_log</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_shortcut"></a><div id="ETreeXSLTTestCase.test_xslt_shortcut-def"><a name="L542"></a><tt class="py-lineno"> 542</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_shortcut-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_shortcut');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_shortcut">test_xslt_shortcut</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_shortcut-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_shortcut-expanded"><a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-307', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> <tt id="link-308" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-308', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-309" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-315', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> <tt id="link-316" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-316', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-309', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-string"> <doc></tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$baz" /></foo></tt> </tt>
-<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"><tt class="py-string"> </doc></tt> </tt>
-<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> </tt>
-<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-310', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-311" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-311', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"'Baz'"</tt><tt class="py-op">)</tt> </tt>
-<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> <tt id="link-312" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-312', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<doc><foo>Bar</foo><foo>Baz</foo></doc>'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt id="link-313" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-317', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"><tt class="py-string"> <doc></tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$bar" /></foo></tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="$baz" /></foo></tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"><tt class="py-string"> </doc></tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-318', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-319" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-319', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">"'Bar'"</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"'Baz'"</tt><tt class="py-op">)</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt id="link-320" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-320', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<doc><foo>Bar</foo><foo>Baz</foo></doc>'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt id="link-321" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-313', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-314" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-314', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-315', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_multiple_elementrees"></a><div id="ETreeXSLTTestCase.test_multiple_elementrees-def"><a name="L540"></a><tt class="py-lineno"> 540</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_multiple_elementrees-toggle" onclick="return toggle('ETreeXSLTTestCase.test_multiple_elementrees');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_multiple_elementrees-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_multiple_elementrees-expanded"><a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-321', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-322', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-323', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_multiple_elementrees"></a><div id="ETreeXSLTTestCase.test_multiple_elementrees-def"><a name="L561"></a><tt class="py-lineno"> 561</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_multiple_elementrees-toggle" onclick="return toggle('ETreeXSLTTestCase.test_multiple_elementrees');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_multiple_elementrees-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_multiple_elementrees-expanded"><a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-324" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-316', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt id="link-317" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-317', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-324', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt id="link-325" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-325', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-326" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-318', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:apply-templates/></A></xsl:template></tt> </tt>
-<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="b"><B><xsl:apply-templates/></B></xsl:template></tt> </tt>
-<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="c"><C><xsl:apply-templates/></C></xsl:template></tt> </tt>
-<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-319" class="py-name" targets="Method lxml.tests.common_imports.HelperTestCase._rootstring()=lxml.tests.common_imports.HelperTestCase-class.html#_rootstring,Method lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-319', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> <tt id="link-320" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-320', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-321', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-322" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-322', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-323" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-323', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt id="link-324" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-324', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-325', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> <tt id="link-326" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-326', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><B>B</B><C>C</C></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> </tt>
-<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-name">b_tree</tt> <tt class="py-op">=</tt> <tt id="link-327" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-326', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:apply-templates/></A></xsl:template></tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="b"><B><xsl:apply-templates/></B></xsl:template></tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="c"><C><xsl:apply-templates/></C></xsl:template></tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-327" class="py-name" targets="Method lxml.tests.common_imports.HelperTestCase._rootstring()=lxml.tests.common_imports.HelperTestCase-class.html#_rootstring,Method lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-327', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"> <tt id="link-328" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-328', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-329', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-330" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-330', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-331" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-331', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"> <tt id="link-332" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-332', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-333" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-333', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"> <tt id="link-334" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-334', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><B>B</B><C>C</C></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"> <tt class="py-name">b_tree</tt> <tt class="py-op">=</tt> <tt id="link-335" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-327', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-328" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-335', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="lxml.etree.ElementTree
xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-328', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-329" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-329', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-330" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-330', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">b_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> <tt id="link-331" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-331', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<b>B</b>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">b_tree</tt><tt class="py-op">.</tt><tt id="link-332" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-332', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-333" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-333', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-334" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-334', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt id="link-335" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-335', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-336" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-336', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"> <tt id="link-337" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-337', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<B>B</B>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-name">c_tree</tt> <tt class="py-op">=</tt> <tt id="link-338" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-338', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-339" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-336', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-337" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-337', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-338" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-338', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">b_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"> <tt id="link-339" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-339', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<b>B</b>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">b_tree</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-340', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-341" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-341', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-342" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-342', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt id="link-343" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-343', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-344" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-344', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt id="link-345" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-345', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<B>B</B>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt class="py-name">c_tree</tt> <tt class="py-op">=</tt> <tt id="link-346" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-346', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="lxml.etree.ElementTree
xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-339', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-340" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-340', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-341" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-341', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">c_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> <tt id="link-342" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-342', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<c>C</c>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">c_tree</tt><tt class="py-op">.</tt><tt id="link-343" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-343', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-344" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-344', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-345" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-345', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"> <tt id="link-346" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-346', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-347" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-347', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"> <tt id="link-348" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-348', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<C>C</C>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_XML"></a><div id="ETreeXSLTTestCase.test_xslt_document_XML-def"><a name="L576"></a><tt class="py-lineno"> 576</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_XML-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_XML');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML">test_xslt_document_XML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_XML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_XML-expanded"><a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from parsed strings</tt> </tt>
-<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"> <tt id="link-349" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-349', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-350" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-347', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-348" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-348', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-349" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-349', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">c_tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt id="link-350" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-350', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<c>C</c>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">c_tree</tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-351', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-352" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-352', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-353" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-353', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt id="link-354" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-354', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-355" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-355', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt id="link-356" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-356', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<C>C</C>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_XML"></a><div id="ETreeXSLTTestCase.test_xslt_document_XML-def"><a name="L597"></a><tt class="py-lineno"> 597</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_XML-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_XML');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML">test_xslt_document_XML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_XML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_XML-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from parsed strings</tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"> <tt id="link-357" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-357', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-358" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-350', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-351" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-351', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-352" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-358', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-359" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-359', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-360" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-352', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-353" class="py-name" targets="Function lxml.etree.XML()=lxml.etree-module.html#XML,Function lxml.objectify.XML()=lxml.objectify-module.html#XML,Method lxml.tests.test_objectify.ObjectifyTestCase.XML()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-360', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-361" class="py-name" targets="Function lxml.etree.XML()=lxml.etree-module.html#XML,Function lxml.objectify.XML()=lxml.objectify-module.html#XML,Method lxml.tests.test_objectify.ObjectifyTestCase.XML()=lxml.tests.test_objectify.ObjectifyTestCase-class.html#XML,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#XML"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-353', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-string"> <test>TEXT<xsl:copy-of select="document('')//test"/></test></tt> </tt>
-<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-354" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-354', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-355" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-361', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"><tt class="py-string"> <test>TEXT<xsl:copy-of select="document('')//test"/></test></tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-362" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-362', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-363" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-355', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-356" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-363', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-364" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-356', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> <tt id="link-357" class="py-name" targets="Variable lxml.etree.iterparse.root=lxml.etree.iterparse-class.html#root"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-357', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-358" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-358', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-359" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-359', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-360" class="py-name" targets="Variable lxml.etree._Comment.tag=lxml.etree._Comment-class.html#tag,Variable lxml.etree._Element.tag=lxml.etree._Element-class.html#tag,Variable lxml.etree._Entity.tag=lxml.etree._Entity-class.html#tag,Variable lxml.etree._ProcessingInstruction.tag=lxml.etree._ProcessingInstruction-class.html#tag,Function lxml.tests.test_xpathevaluator.tag()=lxml.tests.test_xpathevaluator-module.html#tag,Variable xml.etree.ElementTree.Element.tag=xml.etree.ElementTree.Element-class.html#tag"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-364', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"> <tt id="link-365" class="py-name" targets="Variable lxml.etree.iterparse.root=lxml.etree.iterparse-class.html#root"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-365', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-366', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-367" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-367', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-368" class="py-name" targets="Variable lxml.etree._Comment.tag=lxml.etree._Comment-class.html#tag,Variable lxml.etree._Element.tag=lxml.etree._Element-class.html#tag,Variable lxml.etree._Entity.tag=lxml.etree._Entity-class.html#tag,Variable lxml.etree._ProcessingInstruction.tag=lxml.etree._ProcessingInstruction-class.html#tag,Function lxml.tests.test_xpathevaluator.tag()=lxml.tests.test_xpathevaluator-module.html#tag,Variable xml.etree.ElementTree.Element.tag=xml.etree.ElementTree.Element-class.html#tag"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-360', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-361" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-361', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-362" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-368', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-369" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-369', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-370" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-362', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-363" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-363', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-364" class="py-name" targets="Variable lxml.etree.QName.text=lxml.etree.QName-class.html#text,Variable lxml.etree._Element.text=lxml.etree._Element-class.html#text,Variable lxml.etree._Entity.text=lxml.etree._Entity-class.html#text,Variable lxml.objectify.ObjectifiedElement.text=lxml.objectify.ObjectifiedElement-class.html#text,Variable xml.etree.ElementTree.Element.text=xml.etree.ElementTree.Element-class.html#text"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-370', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-371" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-371', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-372" class="py-name" targets="Variable lxml.etree.QName.text=lxml.etree.QName-class.html#text,Variable lxml.etree._Element.text=lxml.etree._Element-class.html#text,Variable lxml.etree._Entity.text=lxml.etree._Entity-class.html#text,Variable lxml.objectify.ObjectifiedElement.text=lxml.objectify.ObjectifiedElement-class.html#text,Variable xml.etree.ElementTree.Element.text=xml.etree.ElementTree.Element-class.html#text"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-364', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-string">'TEXT'</tt><tt class="py-op">)</tt> </tt>
-<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-365" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-365', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-366" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-372', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-string">'TEXT'</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-373" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-373', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-374" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-366', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}copy-of'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_parse"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse-def"><a name="L597"></a><tt class="py-lineno"> 597</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse">test_xslt_document_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
-<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"> <tt id="link-367" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-367', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-368" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-374', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}copy-of'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse-def"><a name="L618"></a><tt class="py-lineno"> 618</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse">test_xslt_document_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse-expanded"><a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"> <tt id="link-375" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-375', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-376" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-368', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-369" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-369', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-370" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-376', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-377', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-378" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-370', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-371" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-378', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-371', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-372" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-372', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-373" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-373', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-374" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-379', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-380" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-380', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-381" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-381', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-382" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-374', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-375" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-382', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-383" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-375', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> <tt id="link-376" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-376', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-377" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-377', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-378" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-378', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-379" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-383', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"> <tt id="link-384" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-384', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-385" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-385', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-386" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-386', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-387" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-379', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-380" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-380', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-381" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-387', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-388" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-388', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-389" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-381', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_elementtree"></a><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-def"><a name="L607"></a><tt class="py-lineno"> 607</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_elementtree-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_elementtree');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree">test_xslt_document_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-expanded"><a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
-<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"> <tt id="link-382" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-382', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-383" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-389', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_elementtree"></a><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-def"><a name="L628"></a><tt class="py-lineno"> 628</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_elementtree-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_elementtree');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_elementtree">test_xslt_document_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_elementtree-expanded"><a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works from loaded files</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"> <tt id="link-390" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-390', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-391" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-383', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-384" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-384', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-385" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-391', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-392', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-393" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-385', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-386" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-393', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="lxml.etree.ElementTree
xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-386', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt id="link-387" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-387', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-388" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-388', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-389" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-394', 'ElementTree', 'link-33');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt id="link-395" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-395', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-396" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-396', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-397" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-389', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-390" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-397', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-398" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-390', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"> <tt id="link-391" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-391', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-392" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-392', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-393" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-393', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-394" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-398', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"> <tt id="link-399" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-399', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-400" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-400', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-401" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-401', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-402" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-394', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-395" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-395', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-396" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-402', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-403" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-403', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-404" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-396', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_error"></a><div id="ETreeXSLTTestCase.test_xslt_document_error-def"><a name="L617"></a><tt class="py-lineno"> 617</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_error-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_error');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_error">test_xslt_document_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_error-expanded"><a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"> <tt id="link-397" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-397', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-398" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-404', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_error"></a><div id="ETreeXSLTTestCase.test_xslt_document_error-def"><a name="L638"></a><tt class="py-lineno"> 638</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_error-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_error');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_error">test_xslt_document_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_error-expanded"><a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"> <tt id="link-405" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-405', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-406" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-398', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-399" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-399', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-400" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-406', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-407" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-407', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-408" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-400', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-401" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-408', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-409" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-401', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-string"> <test>TEXT<xsl:copy-of select="document('uri:__junkfood__is__evil__')//test"/></test></tt> </tt>
-<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-402" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-409', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"><tt class="py-string"> <test>TEXT<xsl:copy-of select="document('uri:__junkfood__is__evil__')//test"/></test></tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-410" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-402', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-403" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-403', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-404" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-404', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-405" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-410', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-411" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-411', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-412" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-412', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-413" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-405', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-406" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-413', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-414" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-406', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_XML_resolver"></a><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-def"><a name="L628"></a><tt class="py-lineno"> 628</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_XML_resolver');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver">test_xslt_document_XML_resolver</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-expanded"><a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works when custom resolvers are in use</tt> </tt>
-<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"> <tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'count'</tt> <tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">}</tt> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">Resolver</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">resolve</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'file://ANYTHING'</tt><tt class="py-op">)</tt> </tt>
-<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-407" class="py-name" targets="Method lxml.etree.Resolver.resolve_string()=lxml.etree.Resolver-class.html#resolve_string"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-407', 'resolve_string', 'link-407');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'<CALLED/>'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> </tt>
-<a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> <tt id="link-408" class="py-name" targets="Variable lxml.etree._ElementTree.parser=lxml.etree._ElementTree-class.html#parser,Variable lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-408', 'parser', 'link-408');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-409" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-414', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_XML_resolver"></a><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-def"><a name="L649"></a><tt class="py-lineno"> 649</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_XML_resolver');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver">test_xslt_document_XML_resolver</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_XML_resolver-expanded"><a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"> <tt class="py-comment"># make sure document('') works when custom resolvers are in use</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"> <tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'count'</tt> <tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">}</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">Resolver</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">resolve</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'file://ANYTHING'</tt><tt class="py-op">)</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-415" class="py-name" targets="Method lxml.etree.Resolver.resolve_string()=lxml.etree.Resolver-class.html#resolve_string"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-415', 'resolve_string', 'link-415');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'<CALLED/>'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"> <tt id="link-416" class="py-name" targets="Variable lxml.etree._ElementTree.parser=lxml.etree._ElementTree-class.html#parser,Variable lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-416', 'parser', 'link-416');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-417" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-409', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-410" class="py-name" targets="Class lxml.etree.XMLParser=lxml.etree.XMLParser-class.html,Class xml.etree.ElementTree.XMLParser=xml.etree.ElementTree.XMLParser-class.html"><a title="lxml.etree.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-410', 'XMLParser', 'link-410');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"> <tt id="link-411" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-411', 'parser', 'link-408');">parser</a></tt><tt class="py-op">.</tt><tt class="py-name">resolvers</tt><tt class="py-op">.</tt><tt id="link-412" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-412', 'add', 'link-412');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"> <tt id="link-413" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-413', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-414" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-417', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-418" class="py-name" targets="Class lxml.etree.XMLParser=lxml.etree.XMLParser-class.html,Class xml.etree.ElementTree.XMLParser=xml.etree.ElementTree.XMLParser-class.html"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-418', 'XMLParser', 'link-418');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt id="link-419" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-419', 'parser', 'link-416');">parser</a></tt><tt class="py-op">.</tt><tt class="py-name">resolvers</tt><tt class="py-op">.</tt><tt id="link-420" class="py-name" targets="Method lxml.html.CheckboxValues.add()=lxml.html.CheckboxValues-class.html#add,Method lxml.html.MultipleSelectOptions.add()=lxml.html.MultipleSelectOptions-class.html#add"><a title="lxml.html.CheckboxValues.add
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-420', 'add', 'link-420');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt id="link-421" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-421', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-422" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-414', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-415" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-415', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-416" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-422', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-423" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-423', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-424" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-416', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-417" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-424', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-425" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-417', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-418" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-418', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"><tt class="py-string"> xmlns:l="local"></tt> </tt>
-<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="document('')//l:data/l:entry"></tt> </tt>
-<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="document('file://ANYTHING')"/></tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="value"></tt> </tt>
-<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="."/></tt> </tt>
-<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
-<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"><tt class="py-string"> <l:data></tt> </tt>
-<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"><tt class="py-string"> <l:entry>A</l:entry></tt> </tt>
-<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"><tt class="py-string"> <l:entry>B</l:entry></tt> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"><tt class="py-string"> </l:data></tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-419" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-419', 'parser', 'link-408');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> </tt>
-<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-420" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-420', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-421" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-421', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-422" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-425', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-426" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-426', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"><tt class="py-string"> xmlns:l="local"></tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="document('')//l:data/l:entry"></tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="document('file://ANYTHING')"/></tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="value"></tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="."/></tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-string"> <l:data></tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-string"> <l:entry>A</l:entry></tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-string"> <l:entry>B</l:entry></tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-string"> </l:data></tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-427" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-427', 'parser', 'link-416');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-428" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-428', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-429" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-429', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-430" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-422', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt id="link-423" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-423', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-424" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-424', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-425" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-425', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-426" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-430', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt id="link-431" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-431', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-432" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-432', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-433" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-433', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-434" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-426', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-427" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-427', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-428" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-428', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-429" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-434', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-435" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-435', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-436" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-436', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-429', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"> <tt class="py-string">'CALLED'</tt><tt class="py-op">)</tt> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-430" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-430', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-431" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-437', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-string">'CALLED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-438" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-438', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-431', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"> <tt class="py-string">'{local}entry'</tt><tt class="py-op">)</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-432" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-432', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-433" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-439', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-string">'{local}entry'</tt><tt class="py-op">)</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-440" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-440', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-433', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-434" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-434', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-435" class="py-name" targets="Method lxml.etree._Attrib.get()=lxml.etree._Attrib-class.html#get,Method lxml.etree._Element.get()=lxml.etree._Element-class.html#get,Method lxml.etree._IDDict.get()=lxml.etree._IDDict-class.html#get,Method lxml.etree._ProcessingInstruction.get()=lxml.etree._ProcessingInstruction-class.html#get"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-441', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-442" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-442', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name" targets="Method lxml.etree._Attrib.get()=lxml.etree._Attrib-class.html#get,Method lxml.etree._Element.get()=lxml.etree._Element-class.html#get,Method lxml.etree._IDDict.get()=lxml.etree._IDDict-class.html#get,Method lxml.etree._ProcessingInstruction.get()=lxml.etree._ProcessingInstruction-class.html#get"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-435', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"> <tt class="py-string">'A'</tt><tt class="py-op">)</tt> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-436" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-436', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-437" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-443', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-string">'A'</tt><tt class="py-op">)</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-444" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-444', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-445" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-437', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"> <tt class="py-string">'CALLED'</tt><tt class="py-op">)</tt> </tt>
-<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-438" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-438', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-439" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-445', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> <tt class="py-string">'CALLED'</tt><tt class="py-op">)</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-446" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-446', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-447" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-439', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> <tt class="py-string">'{local}entry'</tt><tt class="py-op">)</tt> </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-440" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-440', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-441" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-447', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"> <tt class="py-string">'{local}entry'</tt><tt class="py-op">)</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-448', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-449" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-441', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-442" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-442', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-443" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-449', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-450" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-450', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-451" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-443', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-string">'B'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_resolver_url_building"></a><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-def"><a name="L690"></a><tt class="py-lineno"> 690</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_resolver_url_building-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_resolver_url_building');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_resolver_url_building">test_xslt_resolver_url_building</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-expanded"><a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'count'</tt> <tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">}</tt> </tt>
-<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">Resolver</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">resolve</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">expected_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-444" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-444', 'resolve_string', 'link-407');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'<CALLED/>'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> </tt>
-<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-name">stylesheet_xml</tt> <tt class="py-op">=</tt> <tt id="link-445" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-445', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"><tt class="py-string"> xmlns:l="local"></tt> </tt>
-<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="document('test.xml')"/></tt> </tt>
-<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt> </tt>
-<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt id="link-446" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-446', 'parser', 'link-408');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-447" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-447', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-448" class="py-name"><a title="lxml.etree.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-448', 'XMLParser', 'link-410');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"> <tt id="link-449" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-449', 'parser', 'link-408');">parser</a></tt><tt class="py-op">.</tt><tt class="py-name">resolvers</tt><tt class="py-op">.</tt><tt id="link-450" class="py-name"><a title="lxml.html.CheckboxValues.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-450', 'add', 'link-412');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> </tt>
-<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-comment"># test without base_url => relative path only</tt> </tt>
-<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'test.xml'</tt> </tt>
-<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"> <tt id="link-451" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-451', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-452" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-452', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-453" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-453', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-454" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-454', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-455" class="py-name"><a title="lxml.etree.XML
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-451', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> <tt class="py-string">'B'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_resolver_url_building"></a><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-def"><a name="L711"></a><tt class="py-lineno"> 711</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_resolver_url_building-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_resolver_url_building');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_resolver_url_building">test_xslt_resolver_url_building</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_resolver_url_building-expanded"><a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-name">called</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'count'</tt> <tt class="py-op">:</tt> <tt class="py-number">0</tt><tt class="py-op">}</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">Resolver</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">resolve</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">expected_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-452" class="py-name"><a title="lxml.etree.Resolver.resolve_string" class="py-name" href="#" onclick="return doclink('link-452', 'resolve_string', 'link-415');">resolve_string</a></tt><tt class="py-op">(</tt><tt class="py-string">'<CALLED/>'</tt><tt class="py-op">,</tt> <tt class="py-name">context</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-name">stylesheet_xml</tt> <tt class="py-op">=</tt> <tt id="link-453" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-453', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"><tt class="py-string"> xmlns:l="local"></tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="document('test.xml')"/></tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt id="link-454" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-454', 'parser', 'link-416');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-455" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-455', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-456" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-456', 'XMLParser', 'link-418');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt id="link-457" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-457', 'parser', 'link-416');">parser</a></tt><tt class="py-op">.</tt><tt class="py-name">resolvers</tt><tt class="py-op">.</tt><tt id="link-458" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-458', 'add', 'link-420');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">TestResolver</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-comment"># test without base_url => relative path only</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'test.xml'</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt id="link-459" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-459', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-460" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-460', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-461" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-461', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-462" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-462', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-463" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-455', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-456" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-456', 'parser', 'link-408');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-457" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-457', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-458" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-463', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-464" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-464', 'parser', 'link-416');">parser</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-465" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-465', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-466" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-458', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-459" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-466', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-467" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-459', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-comment"># now the same thing with a stylesheet base URL on the filesystem</tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-460" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-460', 'path', 'link-1');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-string">'BASE'</tt><tt class="py-op">,</tt> <tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt id="link-461" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-461', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-462" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-467', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-comment"># now the same thing with a stylesheet base URL on the filesystem</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-468', 'path', 'link-1');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-string">'BASE'</tt><tt class="py-op">,</tt> <tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> <tt id="link-469" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-469', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-470" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-462', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-463" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-463', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-464" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-470', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-471', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-472" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-464', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-465" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-472', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-473" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-465', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-466" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-466', 'parser', 'link-408');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> <tt id="link-467" class="py-name" targets="Variable lxml.html.HtmlMixin.base_url=lxml.html.HtmlMixin-class.html#base_url"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-467', 'base_url', 'link-467');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-468" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-468', 'path', 'link-1');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-string">'BASE'</tt><tt class="py-op">,</tt> <tt class="py-string">'FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-469" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-469', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-470" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-473', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-474" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-474', 'parser', 'link-416');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"> <tt id="link-475" class="py-name" targets="Variable lxml.html.HtmlMixin.base_url=lxml.html.HtmlMixin-class.html#base_url"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-475', 'base_url', 'link-475');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="lxml.etree.XPath.path" class="py-name" href="#" onclick="return doclink('link-476', 'path', 'link-1');">path</a></tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-string">'BASE'</tt><tt class="py-op">,</tt> <tt class="py-string">'FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-477" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-477', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-478" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-470', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-471" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-478', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-479" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-471', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> </tt>
-<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-comment"># now the same thing with a stylesheet base URL</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://server.com/BASE/DIR/test.xml'</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt id="link-472" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-472', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-473" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-479', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"> <tt class="py-comment"># now the same thing with a stylesheet base URL</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> <tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"> <tt class="py-name">expected_url</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://server.com/BASE/DIR/test.xml'</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"> <tt id="link-480" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-480', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-481" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-473', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-474" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-474', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-475" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-481', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-482" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-482', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-483" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-475', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-476" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-483', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-484" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-476', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-477" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-477', 'parser', 'link-408');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt id="link-478" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-478', 'base_url', 'link-467');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">'http://server.com/BASE/DIR/FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-479" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-479', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-480" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-484', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">stylesheet_xml</tt><tt class="py-op">,</tt> <tt id="link-485" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-485', 'parser', 'link-416');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"> <tt id="link-486" class="py-name"><a title="lxml.html.HtmlMixin.base_url" class="py-name" href="#" onclick="return doclink('link-486', 'base_url', 'link-475');">base_url</a></tt><tt class="py-op">=</tt><tt class="py-string">'http://server.com/BASE/DIR/FILE'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-487" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-487', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-488" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-480', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-481" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-488', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-481', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_parse_allow"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-def"><a name="L741"></a><tt class="py-lineno"> 741</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_allow-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_allow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_allow">test_xslt_document_parse_allow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-expanded"><a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-482" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-489', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">called</tt><tt class="py-op">[</tt><tt class="py-string">'count'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse_allow"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-def"><a name="L762"></a><tt class="py-lineno"> 762</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_allow-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_allow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_allow">test_xslt_document_parse_allow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_allow-expanded"><a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-490" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-482', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-483" class="py-name" targets="Class lxml.etree.XSLTAccessControl=lxml.etree.XSLTAccessControl-class.html"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-483', 'XSLTAccessControl', 'link-483');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-484" class="py-name" targets="Function lxml.tests.common_imports.read_file()=lxml.tests.common_imports-module.html#read_file"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-484', 'read_file', 'link-484');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt id="link-485" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-485', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-486" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-490', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-491" class="py-name" targets="Class lxml.etree.XSLTAccessControl=lxml.etree.XSLTAccessControl-class.html"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-491', 'XSLTAccessControl', 'link-491');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-492" class="py-name" targets="Function lxml.tests.common_imports.read_file()=lxml.tests.common_imports-module.html#read_file"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-492', 'read_file', 'link-492');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"> <tt id="link-493" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-493', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-494" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-486', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-487" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-487', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-488" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-494', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-495" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-495', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-488', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-489" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-496', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-489', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-490" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-490', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-491" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-491', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-492" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-497', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-498" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-498', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-499" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-499', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-500" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-492', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-493" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-500', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-493', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"> <tt id="link-494" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-494', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-495" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-495', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-496" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-496', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-497" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-501', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"> <tt id="link-502" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-502', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-503" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-503', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-504" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-504', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-497', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-498" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-498', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-499" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-505', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-506" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-506', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-499', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_parse_deny"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-def"><a name="L752"></a><tt class="py-lineno"> 752</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_deny-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_deny');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny">test_xslt_document_parse_deny</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-expanded"><a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-500" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-507', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"> <tt class="py-string">'{http://www.w3.org/1999/XSL/Transform}stylesheet'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse_deny"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-def"><a name="L773"></a><tt class="py-lineno"> 773</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_deny-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_deny');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny">test_xslt_document_parse_deny</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny-expanded"><a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-508" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-500', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-501" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-501', 'XSLTAccessControl', 'link-483');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-502" class="py-name"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-502', 'read_file', 'link-484');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"> <tt id="link-503" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-503', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-504" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-508', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-509" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-509', 'XSLTAccessControl', 'link-491');">XSLTAccessControl</a></tt><tt class="py-op">(</tt><tt id="link-510" class="py-name"><a title="lxml.tests.common_imports.read_file" class="py-name" href="#" onclick="return doclink('link-510', 'read_file', 'link-492');">read_file</a></tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"> <tt id="link-511" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-511', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-512" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-504', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-505" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-505', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-506" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-512', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-513', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-514" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-506', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-507" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-514', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-507', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-508" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-508', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
-<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-509" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-515', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-516" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-516', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-517" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-509', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-510" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-510', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-511" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-511', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-512" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-517', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-518" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-518', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-519" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-519', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-520" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-512', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-513" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-520', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-513', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_document_parse_deny_all"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-def"><a name="L758"></a><tt class="py-lineno"> 758</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_deny_all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all">test_xslt_document_parse_deny_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-expanded"><a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-514" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-521', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_document_parse_deny_all"></a><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-def"><a name="L779"></a><tt class="py-lineno"> 779</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_document_parse_deny_all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all">test_xslt_document_parse_deny_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_document_parse_deny_all-expanded"><a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt id="link-522" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-514', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-515" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-515', 'XSLTAccessControl', 'link-483');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-516" class="py-name" targets="Variable lxml.etree.XSLTAccessControl.DENY_ALL=lxml.etree.XSLTAccessControl-class.html#DENY_ALL"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-516', 'DENY_ALL', 'link-516');">DENY_ALL</a></tt> </tt>
-<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"> <tt id="link-517" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-517', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-518" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-522', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-523" class="py-name"><a title="lxml.etree.XSLTAccessControl" class="py-name" href="#" onclick="return doclink('link-523', 'XSLTAccessControl', 'link-491');">XSLTAccessControl</a></tt><tt class="py-op">.</tt><tt id="link-524" class="py-name" targets="Variable lxml.etree.XSLTAccessControl.DENY_ALL=lxml.etree.XSLTAccessControl-class.html#DENY_ALL"><a title="lxml.etree.XSLTAccessControl.DENY_ALL" class="py-name" href="#" onclick="return doclink('link-524', 'DENY_ALL', 'link-524');">DENY_ALL</a></tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> <tt id="link-525" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-525', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-526" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-518', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-519" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-519', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-520" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-526', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-527', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-528" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-520', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-521" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-528', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-529" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-521', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-522" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-522', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
-<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-523" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-529', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt id="link-530" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-530', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test-document.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"> <tt class="py-name">access_control</tt> <tt class="py-op">=</tt> <tt class="py-name">access_control</tt><tt class="py-op">)</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-531" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-523', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-524" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-524', 'XSLTApplyError', 'link-161');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-525" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-525', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-526" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-531', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-532" class="py-name"><a title="lxml.etree.XSLTApplyError" class="py-name" href="#" onclick="return doclink('link-532', 'XSLTApplyError', 'link-169');">XSLTApplyError</a></tt><tt class="py-op">,</tt> <tt id="link-533" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-533', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-534" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-526', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-527" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-534', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-535" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-527', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_move_result"></a><div id="ETreeXSLTTestCase.test_xslt_move_result-def"><a name="L764"></a><tt class="py-lineno"> 764</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_move_result-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_move_result');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_move_result">test_xslt_move_result</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_move_result-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_move_result-expanded"><a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"> <tt id="link-528" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-528', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-529" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-535', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_move_result"></a><div id="ETreeXSLTTestCase.test_xslt_move_result-def"><a name="L785"></a><tt class="py-lineno"> 785</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_move_result-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_move_result');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_move_result">test_xslt_move_result</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_move_result-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_move_result-expanded"><a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt id="link-536" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-536', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-537" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-529', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-530" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-537', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-538" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-530', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-531" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-531', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-string"> <transform></tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"><tt class="py-string"> <widget displayType="fieldset"/></tt> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"><tt class="py-string"> </transform>'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt id="link-532" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-532', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-533" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-538', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-539', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"><tt class="py-string"> <transform></tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"><tt class="py-string"> <widget displayType="fieldset"/></tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"><tt class="py-string"> </transform>'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> <tt id="link-540" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-540', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-541" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-533', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-534" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-534', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-535" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-541', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-542" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-542', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-543" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-535', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-536" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-543', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-544" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-536', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-537" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-537', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"><tt class="py-string"> <xsl:output method="html" indent="no"/></tt> </tt>
-<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"><tt class="py-string"> <html></tt> </tt>
-<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
-<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"><tt class="py-string"> </html></tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="widget"></tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"><tt class="py-string"> <xsl:element name="{@displayType}"/></tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet>'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> </tt>
-<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-538" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-538', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-539" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-539', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt id="link-540" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-540', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-541" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-541', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt id="link-542" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-542', 'root', 'link-357');">root</a></tt> <tt class="py-comment"># segfaulted before</tt> </tt>
-</div><a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi"></a><div id="ETreeXSLTTestCase.test_xslt_pi-def"><a name="L789"></a><tt class="py-lineno"> 789</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi">test_xslt_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi-expanded"><a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-543" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-543', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="%s"?></tt> </tt>
-<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt> <tt class="py-op">%</tt> <tt id="link-544" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-544', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test1.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"> </tt>
-<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-545" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-545', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-546" class="py-name" targets="Method lxml.etree._Element.getprevious()=lxml.etree._Element-class.html#getprevious"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-546', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-547" class="py-name" targets="Method lxml.etree._XSLTProcessingInstruction.parseXSL()=lxml.etree._XSLTProcessingInstruction-class.html#parseXSL"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-547', 'parseXSL', 'link-547');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-548" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-548', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-549" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-544', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-545" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-545', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"><tt class="py-string"> <xsl:output method="html" indent="no"/></tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"><tt class="py-string"> <html></tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"><tt class="py-string"> </html></tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="widget"></tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"><tt class="py-string"> <xsl:element name="{@displayType}"/></tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet>'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-546" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-546', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-547" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-547', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"> <tt id="link-548" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-548', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-549" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-549', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt id="link-550" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-550', 'root', 'link-365');">root</a></tt> <tt class="py-comment"># segfaulted before</tt> </tt>
+</div><a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi"></a><div id="ETreeXSLTTestCase.test_xslt_pi-def"><a name="L810"></a><tt class="py-lineno"> 810</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi">test_xslt_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi-expanded"><a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-551', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="%s"?></tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt> <tt class="py-op">%</tt> <tt id="link-552" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-552', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test1.xslt"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-553', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name" targets="Method lxml.etree._Element.getprevious()=lxml.etree._Element-class.html#getprevious"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-554', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name" targets="Method lxml.etree._XSLTProcessingInstruction.parseXSL()=lxml.etree._XSLTProcessingInstruction-class.html#parseXSL"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-555', 'parseXSL', 'link-555');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-556" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-556', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-549', 'tag', 'link-360');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid"></a><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-def"><a name="L802"></a><tt class="py-lineno"> 802</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid">test_xslt_pi_embedded_xmlid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-expanded"><a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-comment"># test xml:id dictionary lookup mechanism</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-550" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-550', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="#style"?></tt> </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"> </tt>
-<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-551" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-551', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-552" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-552', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-553" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-553', 'parseXSL', 'link-547');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-554" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-554', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
-<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-555" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-557', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid"></a><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-def"><a name="L823"></a><tt class="py-lineno"> 823</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid">test_xslt_pi_embedded_xmlid</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_xmlid-expanded"><a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"> <tt class="py-comment"># test xml:id dictionary lookup mechanism</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-558" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-558', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="#style"?></tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet></tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-559', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-560" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-560', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-561', 'parseXSL', 'link-555');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-562', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-555', 'tag', 'link-360');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-556" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-563', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-564" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-556', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-557" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-557', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">style_root</tt><tt class="py-op">)</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"> <tt id="link-558" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-558', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_embedded_id"></a><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-def"><a name="L831"></a><tt class="py-lineno"> 831</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_embedded_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id">test_xslt_pi_embedded_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-expanded"><a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"> <tt class="py-comment"># test XPath lookup mechanism</tt> </tt>
-<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-559" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-564', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-565" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-565', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">style_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt id="link-566" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-566', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_embedded_id"></a><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-def"><a name="L852"></a><tt class="py-lineno"> 852</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_embedded_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id">test_xslt_pi_embedded_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_embedded_id-expanded"><a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-comment"># test XPath lookup mechanism</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-559', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="#style"?></tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt id="link-560" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-560', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-561" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-567', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="#style"?></tt> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"> <tt id="link-568" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-568', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-561', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
-<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-562" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-562', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-563" class="py-name" targets="Method lxml.etree._Element.append()=lxml.etree._Element-class.html#append"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-563', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt id="link-564" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-564', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-565" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-565', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-566" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-566', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-567" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-567', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-568" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-568', 'parseXSL', 'link-547');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-569" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-569', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-570" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-569', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0" xml:id="style"</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-570" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-570', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-571" class="py-name" targets="Method lxml.etree._Element.append()=lxml.etree._Element-class.html#append"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-571', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt id="link-572" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-572', 'style', 'link-24');">style</a></tt><tt class="py-op">.</tt><tt id="link-573" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-573', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt class="py-name">style_root</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-574', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-575" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-575', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-576" class="py-name"><a title="lxml.etree._XSLTProcessingInstruction.parseXSL" class="py-name" href="#" onclick="return doclink('link-576', 'parseXSL', 'link-555');">parseXSL</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-577', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/1999/XSL/Transform}stylesheet"</tt><tt class="py-op">,</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"> <tt class="py-name">style_root</tt><tt class="py-op">.</tt><tt id="link-578" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-570', 'tag', 'link-360');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-571" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-578', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-579" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-571', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-572" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-572', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">style_root</tt><tt class="py-op">)</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt id="link-573" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-573', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_get"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get-def"><a name="L865"></a><tt class="py-lineno"> 865</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get">test_xslt_pi_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get-expanded"><a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-574" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-579', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-580" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-580', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">style_root</tt><tt class="py-op">)</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"> <tt id="link-581" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-581', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_get"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get-def"><a name="L886"></a><tt class="py-lineno"> 886</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get">test_xslt_pi_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_get-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get-expanded"><a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-574', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt id="link-575" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-575', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-576" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-576', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-577" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-577', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-578" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-578', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-579" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-582', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> <tt id="link-583" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-583', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-584" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-584', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-585" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-585', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-586" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-586', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-579', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_get_all"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-def"><a name="L877"></a><tt class="py-lineno"> 877</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_all-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all">test_xslt_pi_get_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-expanded"><a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-580" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-587', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_get_all"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-def"><a name="L898"></a><tt class="py-lineno"> 898</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_all-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_all');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all">test_xslt_pi_get_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all-expanded"><a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-588" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-580', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"> <tt id="link-581" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-581', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-582" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-582', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-583" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-583', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-584" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-584', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-585" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-588', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt id="link-589" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-589', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-590" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-590', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-591" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-591', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-592" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-592', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-593" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-585', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-586" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-586', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-587" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-593', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-594" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-594', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-595" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-587', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"type"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-588" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-588', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-589" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-595', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"type"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-596" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-596', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-597" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-589', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"motz"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-def"><a name="L891"></a><tt class="py-lineno"> 891</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_all_reversed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed">test_xslt_pi_get_all_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-expanded"><a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-590" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-597', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"motz"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-def"><a name="L912"></a><tt class="py-lineno"> 912</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_all_reversed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed">test_xslt_pi_get_all_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_all_reversed-expanded"><a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-598" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-590', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet href="TEST" type="text/xsl"?></tt> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> </tt>
-<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"> <tt id="link-591" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-591', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-592" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-592', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-593" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-593', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-594" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-594', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-595" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-598', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet href="TEST" type="text/xsl"?></tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt id="link-599" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-599', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-600" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-600', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-601" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-601', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-602" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-602', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-603" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-595', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-596" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-596', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-597" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-603', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"text/xsl"</tt><tt class="py-op">,</tt> <tt id="link-604" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-604', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-605" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-597', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"type"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-598" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-598', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-599" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-605', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"type"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-606" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-606', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-607" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-599', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"motz"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_get_unknown"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-def"><a name="L905"></a><tt class="py-lineno"> 905</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_unknown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown">test_xslt_pi_get_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-expanded"><a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-600" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-607', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"motz"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_get_unknown"></a><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-def"><a name="L926"></a><tt class="py-lineno"> 926</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_get_unknown');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown">test_xslt_pi_get_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_get_unknown-expanded"><a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-600', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
-<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt id="link-601" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-601', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-602" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-602', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-603" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-603', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-604" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-604', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-605" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-608', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"> <tt id="link-609" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-609', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-610" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-610', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-611" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-611', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-612" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-612', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-613" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-605', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"unknownattribute"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_set_replace"></a><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-def"><a name="L917"></a><tt class="py-lineno"> 917</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_set_replace-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_set_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_replace">test_xslt_pi_set_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-expanded"><a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-606" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-613', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"unknownattribute"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_set_replace"></a><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-def"><a name="L938"></a><tt class="py-lineno"> 938</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_set_replace-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_set_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_replace">test_xslt_pi_set_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_set_replace-expanded"><a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-614" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-606', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
-<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt id="link-607" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-607', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-608" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-608', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-609" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-609', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-610" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-610', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-611" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-614', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl" href="TEST"?></tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"> <tt id="link-615" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-615', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-616', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-617" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-617', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-618" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-618', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-619" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-611', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"> <tt id="link-612" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-612', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-613" class="py-name" targets="Method lxml.etree._Element.set()=lxml.etree._Element-class.html#set,Method lxml.etree._XSLTProcessingInstruction.set()=lxml.etree._XSLTProcessingInstruction-class.html#set"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-613', 'set', 'link-613');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST123"</tt><tt class="py-op">)</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST123"</tt><tt class="py-op">,</tt> <tt id="link-614" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-614', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-615" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-619', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt id="link-620" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-620', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-621" class="py-name" targets="Method lxml.etree._Element.set()=lxml.etree._Element-class.html#set,Method lxml.etree._XSLTProcessingInstruction.set()=lxml.etree._XSLTProcessingInstruction-class.html#set"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-621', 'set', 'link-621');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST123"</tt><tt class="py-op">)</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST123"</tt><tt class="py-op">,</tt> <tt id="link-622" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-622', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-623" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-615', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTTestCase.test_xslt_pi_set_new"></a><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-def"><a name="L932"></a><tt class="py-lineno"> 932</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_set_new-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_set_new');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new">test_xslt_pi_set_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-expanded"><a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-616" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-623', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTTestCase.test_xslt_pi_set_new"></a><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-def"><a name="L953"></a><tt class="py-lineno"> 953</tt> <a class="py-toggle" href="#" id="ETreeXSLTTestCase.test_xslt_pi_set_new-toggle" onclick="return toggle('ETreeXSLTTestCase.test_xslt_pi_set_new');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new">test_xslt_pi_set_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTTestCase.test_xslt_pi_set_new-expanded"><a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-624" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-616', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl"?></tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"> <tt id="link-617" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-617', 'pi', 'link-575');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-618" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-618', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-619" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-619', 'getprevious', 'link-546');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-620" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-620', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-621" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-624', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"><tt class="py-string"><?xml-stylesheet type="text/xsl"?></tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"><tt class="py-string"><a></tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"><tt class="py-string"> <b>B</b></tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"><tt class="py-string"> <c>C</c></tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"><tt class="py-string"></a>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"> <tt id="link-625" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-625', 'pi', 'link-583');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-626" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-626', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-627" class="py-name"><a title="lxml.etree._Element.getprevious" class="py-name" href="#" onclick="return doclink('link-627', 'getprevious', 'link-554');">getprevious</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-628" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-628', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-629" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-621', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt id="link-622" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-622', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-623" class="py-name"><a title="lxml.etree._Element.set
-lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-623', 'set', 'link-613');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-624" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-624', 'pi', 'link-575');">pi</a></tt><tt class="py-op">.</tt><tt id="link-625" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-629', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"> <tt id="link-630" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-630', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-631" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._XSLTProcessingInstruction.set" class="py-name" href="#" onclick="return doclink('link-631', 'set', 'link-621');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">,</tt> <tt id="link-632" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-632', 'pi', 'link-583');">pi</a></tt><tt class="py-op">.</tt><tt id="link-633" class="py-name"><a title="lxml.etree._Attrib.get
lxml.etree._Element.get
lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-625', 'get', 'link-435');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase"></a><div id="ETreeEXSLTTestCase-def"><a name="L947"></a><tt class="py-lineno"> 947</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase-toggle" onclick="return toggle('ETreeEXSLTTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeEXSLTTestCase-expanded"><a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-docstring">"""EXSLT tests"""</tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_str"></a><div id="ETreeEXSLTTestCase.test_exslt_str-def"><a name="L950"></a><tt class="py-lineno"> 950</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_str-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_str');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_str-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_str-expanded"><a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-626" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-633', 'get', 'link-443');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"href"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase"></a><div id="ETreeEXSLTTestCase-def"><a name="L968"></a><tt class="py-lineno"> 968</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase-toggle" onclick="return toggle('ETreeEXSLTTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeEXSLTTestCase-expanded"><a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-docstring">"""EXSLT tests"""</tt> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_str"></a><div id="ETreeEXSLTTestCase.test_exslt_str-def"><a name="L971"></a><tt class="py-lineno"> 971</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_str-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_str');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_str-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_str-expanded"><a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-626', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> <tt id="link-627" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-627', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-628" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-634', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt id="link-635" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-635', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-636" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-628', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"><tt class="py-string"> xmlns:str="http://exslt.org/strings"</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="str xsl"></tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="text()"></tt> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="str:align(string(.), '***', 'center')" /></tt> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
-<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
-<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-629" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-636', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"><tt class="py-string"> xmlns:str="http://exslt.org/strings"</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="str xsl"></tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="text()"></tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="str:align(string(.), '***', 'center')" /></tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-637" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-629', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-630" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-630', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-631" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-631', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-string"><a><b>*B*</b><c>*C*</c></a></tt> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt id="link-632" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-632', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-633" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-637', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-638" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-638', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-639" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-639', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"><tt class="py-string"><a><b>*B*</b><c>*C*</c></a></tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt id="link-640" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-640', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-641" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-633', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-634" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-634', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">>=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">21</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_str_attribute_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-def"><a name="L976"></a><tt class="py-lineno"> 976</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_str_attribute_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-expanded"><a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-635" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-641', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-642" class="py-name"><a title="lxml.etree.LIBXSLT_VERSION" class="py-name" href="#" onclick="return doclink('link-642', 'LIBXSLT_VERSION', 'link-37');">LIBXSLT_VERSION</a></tt> <tt class="py-op">>=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">21</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_str_attribute_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-def"><a name="L997"></a><tt class="py-lineno"> 997</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_str_attribute_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_str_attribute_replace-expanded"><a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-643" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-635', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"> <tt id="link-636" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-636', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-637" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-643', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt id="link-644" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-644', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-645" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-637', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version = "1.0"</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl='http://www.w3.org/1999/XSL/Transform'</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"><tt class="py-string"> xmlns:str="http://exslt.org/strings"</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="str"></tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"><tt class="py-string"> <h1 class="{str:replace('abc', 'b', 'x')}">test</h1></tt> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
-<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> </tt>
-<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-638" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-645', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"><tt class="py-string"> <xsl:stylesheet version = "1.0"</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl='http://www.w3.org/1999/XSL/Transform'</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-string"> xmlns:str="http://exslt.org/strings"</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="str"></tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"><tt class="py-string"> <h1 class="{str:replace('abc', 'b', 'x')}">test</h1></tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"><tt class="py-string"> </xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-646" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-638', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-639" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-639', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-640" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-640', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"><tt class="py-string"><h1 class="axc">test</h1></tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt id="link-641" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-641', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_math"></a><div id="ETreeEXSLTTestCase.test_exslt_math-def"><a name="L998"></a><tt class="py-lineno"> 998</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_math-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_math');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_math-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_math-expanded"><a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-642" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-646', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-647" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-647', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-648" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-648', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"><tt class="py-string"><h1 class="axc">test</h1></tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt id="link-649" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-649', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_math"></a><div id="ETreeEXSLTTestCase.test_exslt_math-def"><a name="L1019"></a><tt class="py-lineno">1019</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_math-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_math');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_math-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_math-expanded"><a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-650" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-642', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"> <tt id="link-643" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-643', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-644" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-650', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt id="link-651" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-651', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-652" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-644', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-string"> xmlns:math="http://exslt.org/math"</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="math xsl"></tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="pi"></tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="math:constant('PI', count(*)+2)"/></tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-645" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-652', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"><tt class="py-string"> xmlns:math="http://exslt.org/math"</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="math xsl"></tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy></tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="pi"></tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="math:constant('PI', count(*)+2)"/></tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"><tt class="py-string"> </xsl:copy></tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-653" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-645', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-646" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-646', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-647" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-647', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"><tt class="py-string"><a pi="3.14"><b pi="3">B</b><c pi="3">C</c></a></tt> </tt>
-<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt id="link-648" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-648', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_test"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-def"><a name="L1023"></a><tt class="py-lineno">1023</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_test-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_test');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-expanded"><a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt id="link-649" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-649', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-650" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-653', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-654" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-654', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-655" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-655', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"><tt class="py-string"><a pi="3.14"><b pi="3">B</b><c pi="3">C</c></a></tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">,</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> <tt id="link-656" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-656', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_test"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-def"><a name="L1044"></a><tt class="py-lineno">1044</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_test-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_test');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_test-expanded"><a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"> <tt id="link-657" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-657', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-658" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-650', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-651" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-651', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-652" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-658', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-659" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-659', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-660" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-652', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-653" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-660', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-661" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-653', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-654" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-654', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"><tt class="py-string"> <test><xsl:copy-of select="*[regexp:test(string(.), '8.')]"/></test></tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-655" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-655', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-656" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-661', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-662" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-662', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"><tt class="py-string"> <test><xsl:copy-of select="*[regexp:test(string(.), '8.')]"/></test></tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-663" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-663', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-664" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-656', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-657" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-664', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-665" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-657', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-658" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-658', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>123</b><b>098</b><b>987</b></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"> <tt id="link-659" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-659', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-660" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-660', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-661" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-661', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-662" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-665', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-666" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-666', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>123</b><b>098</b><b>987</b></a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"> <tt id="link-667" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-667', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-668" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-668', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-669" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-669', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-670" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-662', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-663" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-663', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-664" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-664', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-665" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-670', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-671" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-671', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-672" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-672', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-673" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-665', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-666" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-666', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-667" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-673', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-674" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-674', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-675" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-667', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"> <tt class="py-string">'987'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-def"><a name="L1043"></a><tt class="py-lineno">1043</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_replace-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-expanded"><a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"> <tt id="link-668" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-668', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-669" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-675', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-string">'987'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_replace"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-def"><a name="L1064"></a><tt class="py-lineno">1064</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_replace-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_replace');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_replace-expanded"><a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> <tt id="link-676" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-676', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-677" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-669', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-670" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-670', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-671" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-677', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-678" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-678', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-679" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-671', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-672" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-679', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-680" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-672', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="regexp:replace(string(.), 'd.', '', 'XX')"/></tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"><tt class="py-string"> <xsl:text>-</xsl:text></tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="regexp:replace(string(.), 'd.', 'gi', 'XX')"/></tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-673" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-673', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-674" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-674', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-675" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-680', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="regexp:replace(string(.), 'd.', '', 'XX')"/></tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-string"> <xsl:text>-</xsl:text></tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"><tt class="py-string"> <xsl:copy-of select="regexp:replace(string(.), 'd.', 'gi', 'XX')"/></tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-681" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-681', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-682" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-682', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-683" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-675', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-676" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-676', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a>abdCdEeDed</a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> <tt id="link-677" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-677', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-678" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-678', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-679" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-679', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-680" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-683', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-684" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-684', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a>abdCdEeDed</a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt id="link-685" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-685', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-686" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-686', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-687" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-687', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-688" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-680', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-681" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-681', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-682" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-682', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-683" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-688', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-689" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-689', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-690" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-690', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-691" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-683', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'abXXdEeDed-abXXXXeXXd'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-def"><a name="L1064"></a><tt class="py-lineno">1064</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-expanded"><a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> <tt id="link-684" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-684', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-685" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-691', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'abXXdEeDed-abXXXXeXXd'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-def"><a name="L1085"></a><tt class="py-lineno">1085</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match-expanded"><a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"> <tt id="link-692" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-692', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-693" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-685', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-686" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-686', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-687" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-693', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-694" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-694', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-695" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-687', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-688" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-695', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-696" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-688', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:copy-of select="regexp:match(string(.), 'd.')"/></test1></tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-string"> <test2><xsl:copy-of select="regexp:match(string(.), 'd.', 'g')"/></test2></tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"><tt class="py-string"> <test2i><xsl:copy-of select="regexp:match(string(.), 'd.', 'gi')"/></test2i></tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-689" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-689', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-690" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-690', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-691" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-696', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*"></tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:copy-of select="regexp:match(string(.), 'd.')"/></test1></tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"><tt class="py-string"> <test2><xsl:copy-of select="regexp:match(string(.), 'd.', 'g')"/></test2></tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"><tt class="py-string"> <test2i><xsl:copy-of select="regexp:match(string(.), 'd.', 'gi')"/></test2i></tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-697" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-697', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-698" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-698', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-699" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-691', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-692" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-692', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a>abdCdEeDed</a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt id="link-693" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-693', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-694" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-694', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-695" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-695', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-696" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-699', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-700" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-700', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a>abdCdEeDed</a>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> <tt id="link-701" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-701', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-702" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-702', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-703" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-703', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-704" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-696', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-697" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-697', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-698" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-698', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-699" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-699', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-700" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-704', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-705" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-705', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-706" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-706', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-707" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-707', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-708" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-700', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-701" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-701', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-702" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-708', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-709" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-709', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-710" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-702', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-703" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-703', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-704" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-704', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-705" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-710', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-711" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-711', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-712" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-712', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-713" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-705', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-706" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-706', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-707" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-713', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-714" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-714', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-715" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-707', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-708" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-708', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-709" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-715', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-716" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-716', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-717" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-709', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-710" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-710', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-711" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-717', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-718" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-718', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-719" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-711', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-712" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-712', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-713" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-713', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-714" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-719', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-720" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-720', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-721', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-722" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-714', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-715', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-716" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-722', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-723" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-723', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-724" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-716', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-717" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-717', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-718" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-724', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dC'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-725" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-725', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-726" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-718', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-719" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-719', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-720" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-726', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-727" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-727', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-728" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-720', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-721', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-722" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-728', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'dE'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-729" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-729', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-730" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-722', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-723" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-723', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-724" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-730', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'match'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-731" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-731', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-732" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-724', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'De'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match_groups"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-def"><a name="L1101"></a><tt class="py-lineno">1101</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match_groups');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-expanded"><a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt id="link-725" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-725', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-726" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-732', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'De'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match_groups"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-def"><a name="L1122"></a><tt class="py-lineno">1122</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match_groups');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match_groups-expanded"><a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"> <tt id="link-733" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-733', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-734" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-726', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-727" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-727', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-728" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-734', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-735" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-735', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-736" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-728', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-729" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-736', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-737" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-729', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-730" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-730', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"><tt class="py-string"> '123abc567', '([0-9]+)([a-z]+)([0-9]+)' )"></tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-731" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-731', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-732" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-732', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-733" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-737', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-738" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-738', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"><tt class="py-string"> '123abc567', '([0-9]+)([a-z]+)([0-9]+)' )"></tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-739" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-739', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-740" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-740', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-741" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-733', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-734" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-734', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"> <tt id="link-735" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-735', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-736" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-736', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-737" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-737', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-738" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-741', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-742" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-742', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt id="link-743" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-743', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-744" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-744', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-745', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-746" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-738', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-739" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-739', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-740" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-740', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-741" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-746', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-747" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-747', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-748" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-748', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-749" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-741', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123abc567"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-742" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-742', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-743" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-749', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123abc567"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-750" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-750', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-751" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-743', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-744" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-744', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-745" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-751', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"123"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-752" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-752', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-753" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-745', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"abc"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-746" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-746', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-747" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-753', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"abc"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-754" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-754', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-755" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-747', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"567"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match1"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-def"><a name="L1126"></a><tt class="py-lineno">1126</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match1-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match1');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-expanded"><a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"> <tt id="link-748" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-748', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-749" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-755', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"567"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match1"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-def"><a name="L1147"></a><tt class="py-lineno">1147</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match1-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match1');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match1-expanded"><a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt id="link-756" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-756', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-757" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-749', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-750" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-750', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-751" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-757', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-758" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-758', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-759" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-751', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-752" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-759', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-760" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-752', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-753" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-753', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"><tt class="py-string"> 'http://www.bayes.co.uk/xml/index.xml?/xml/utils/rechecker.xml',</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"><tt class="py-string"> '(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)')"></tt> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-754" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-754', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-755" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-755', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-756" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-760', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-761" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-761', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"><tt class="py-string"> 'http://www.bayes.co.uk/xml/index.xml?/xml/utils/rechecker.xml',</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"><tt class="py-string"> '(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)')"></tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-762" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-762', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-763" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-763', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-764" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-756', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-757" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-757', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt id="link-758" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-758', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-759" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-759', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-760" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-760', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-761" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-764', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-765" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-765', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt id="link-766" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-766', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-767" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-767', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-768" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-768', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-769" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-761', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-762" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-762', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt id="link-763" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-763', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-764" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-769', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-770" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-770', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> <tt id="link-771" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-771', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-772" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-764', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> <tt class="py-string">"http://www.bayes.co.uk/xml/index.xml?/xml/utils/rechecker.xml"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt id="link-765" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-765', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-766" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-772', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-string">"http://www.bayes.co.uk/xml/index.xml?/xml/utils/rechecker.xml"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"> <tt id="link-773" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-773', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-774" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-766', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"> <tt class="py-string">"http"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"> <tt id="link-767" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-767', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-768" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-774', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> <tt class="py-string">"http"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt id="link-775" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-775', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-776" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-768', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-string">"www.bayes.co.uk"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-769" class="py-name" targets="Variable lxml.tests.common_imports.HelperTestCase.assertFalse=lxml.tests.common_imports.HelperTestCase-class.html#assertFalse"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-769', 'assertFalse', 'link-769');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-770" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-770', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-771" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-776', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"> <tt class="py-string">"www.bayes.co.uk"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-777" class="py-name" targets="Variable lxml.tests.common_imports.HelperTestCase.assertFalse=lxml.tests.common_imports.HelperTestCase-class.html#assertFalse"><a title="lxml.tests.common_imports.HelperTestCase.assertFalse" class="py-name" href="#" onclick="return doclink('link-777', 'assertFalse', 'link-777');">assertFalse</a></tt><tt class="py-op">(</tt><tt id="link-778" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-778', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-779" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-771', 'text', 'link-364');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt id="link-772" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-772', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-773" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-779', 'text', 'link-372');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt id="link-780" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-780', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-781" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-773', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-string">"/xml/index.xml?/xml/utils/rechecker.xml"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase.test_exslt_regexp_match2"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-def"><a name="L1162"></a><tt class="py-lineno">1162</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match2-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-expanded"><a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt id="link-774" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-774', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-775" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-781', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-string">"/xml/index.xml?/xml/utils/rechecker.xml"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase.test_exslt_regexp_match2"></a><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-def"><a name="L1183"></a><tt class="py-lineno">1183</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase.test_exslt_regexp_match2-toggle" onclick="return toggle('ETreeEXSLTTestCase.test_exslt_regexp_match2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase.test_exslt_regexp_match2-expanded"><a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"> <tt id="link-782" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-782', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-783" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-775', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-776" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-776', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-777" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-783', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-784" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-784', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-785" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-777', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '(\w+)', 'g')"></tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-778" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-778', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-779" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-785', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '(\w+)', 'g')"></tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-786" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-786', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-787" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-779', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-780" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-787', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-788" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-780', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-781" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-781', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt id="link-782" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-782', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-783" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-783', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-784" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-784', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-785" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-788', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-789" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-789', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"> <tt id="link-790" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-790', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-791" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-791', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-792" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-792', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-793" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-785', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-786" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-786', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-787" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-787', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-788" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-793', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-794" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-794', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-795" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-795', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-796" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-788', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-789" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-789', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-790" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-796', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-797" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-797', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-798" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-790', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-791" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-791', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-792" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-798', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-799" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-799', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-800" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-792', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-793" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-793', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-794" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-800', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-801" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-801', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-802" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-794', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-795" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-795', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-796" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-802', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-803" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-803', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-804" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-796', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"string"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase._test_exslt_regexp_match3"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-def"><a name="L1189"></a><tt class="py-lineno">1189</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase._test_exslt_regexp_match3-toggle" onclick="return toggle('ETreeEXSLTTestCase._test_exslt_regexp_match3');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#_test_exslt_regexp_match3">_test_exslt_regexp_match3</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-expanded"><a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"> <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"> <tt id="link-797" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-797', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-798" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-804', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"string"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase._test_exslt_regexp_match3"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-def"><a name="L1210"></a><tt class="py-lineno">1210</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase._test_exslt_regexp_match3-toggle" onclick="return toggle('ETreeEXSLTTestCase._test_exslt_regexp_match3');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#_test_exslt_regexp_match3">_test_exslt_regexp_match3</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match3-expanded"><a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt id="link-805" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-805', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-806" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-798', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-799" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-799', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-800" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-806', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-807" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-807', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-808" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-800', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-801" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-808', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-809" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-801', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-802" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-802', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '([a-z])+ ', 'g')"></tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-803" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-803', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-804" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-804', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-805" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-809', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-810" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-810', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '([a-z])+ ', 'g')"></tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-811" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-811', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-812" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-812', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-813" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-805', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-806" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-806', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> <tt id="link-807" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-807', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-808" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-808', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-809" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-809', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-810" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-813', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-814" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-814', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt id="link-815" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-815', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-816" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-816', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-817" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-817', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-818" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-810', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-811" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-811', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-812" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-812', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-813" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-818', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-819" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-819', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-820" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-820', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-821" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-813', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"his"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-814" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-814', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-815" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-821', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"his"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-822" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-822', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-823" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-815', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-816" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-816', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-817" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-823', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-824" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-824', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-825" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-817', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-818" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-818', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-819" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-825', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-826" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-826', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-827" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-819', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"> </tt>
-<a name="ETreeEXSLTTestCase._test_exslt_regexp_match4"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-def"><a name="L1216"></a><tt class="py-lineno">1216</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase._test_exslt_regexp_match4-toggle" onclick="return toggle('ETreeEXSLTTestCase._test_exslt_regexp_match4');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#_test_exslt_regexp_match4">_test_exslt_regexp_match4</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-expanded"><a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"> <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt id="link-820" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-820', 'xslt', 'link-226');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-821" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-827', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> </tt>
+<a name="ETreeEXSLTTestCase._test_exslt_regexp_match4"></a><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-def"><a name="L1237"></a><tt class="py-lineno">1237</tt> <a class="py-toggle" href="#" id="ETreeEXSLTTestCase._test_exslt_regexp_match4-toggle" onclick="return toggle('ETreeEXSLTTestCase._test_exslt_regexp_match4');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#_test_exslt_regexp_match4">_test_exslt_regexp_match4</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeEXSLTTestCase._test_exslt_regexp_match4-expanded"><a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"> <tt class="py-comment"># taken from http://www.exslt.org/regexp/functions/match/index.html</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"> <tt class="py-comment"># THIS IS NOT SUPPORTED!</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"> <tt id="link-828" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-828', 'xslt', 'link-234');">xslt</a></tt> <tt class="py-op">=</tt> <tt id="link-829" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-821', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-822" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-822', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-823" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-829', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-830" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-830', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-831" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-823', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-824" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-831', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-832" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-824', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-825" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-825', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '([a-z])+ ', 'gi')"></tt> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
-<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
-<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-826" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-826', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-827" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-827', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-828" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-832', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-833" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-833', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"""\</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"><tt class="py-string"> xmlns:regexp="http://exslt.org/regular-expressions"</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"><tt class="py-string"> <test></tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt> <tt class="py-line"><tt class="py-string"> <xsl:for-each select="regexp:match(</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"><tt class="py-string"> 'This is a test string', '([a-z])+ ', 'gi')"></tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"><tt class="py-string"> <test1><xsl:value-of select="."/></test1></tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"><tt class="py-string"> </xsl:for-each></tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"><tt class="py-string"> </test></tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet></tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"><tt class="py-string">"""</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt id="link-834" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-834', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-835" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-835', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-836" class="py-name"><a title="lxml.etree.XML
lxml.objectify.XML
lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-828', 'XML', 'link-353');">XML</a></tt><tt class="py-op">(</tt><tt id="link-829" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-829', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt id="link-830" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-830', 'root', 'link-357');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-831" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-831', 'getroot', 'link-113');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-832" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-832', 'root', 'link-357');">root</a></tt><tt class="py-op">.</tt><tt id="link-833" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-836', 'XML', 'link-361');">XML</a></tt><tt class="py-op">(</tt><tt id="link-837" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-837', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"> <tt id="link-838" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-838', 'root', 'link-365');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-839" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-839', 'getroot', 'link-121');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-840" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-840', 'root', 'link-365');">root</a></tt><tt class="py-op">.</tt><tt id="link-841" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-833', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-834" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-834', 'root', 'link-357');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-835" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-835', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-836" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-841', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'test'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-842" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-842', 'root', 'link-365');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-843" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-843', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-844" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-836', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-837" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-837', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-838" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-844', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"This"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-845" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-845', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-846" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-838', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-839" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-839', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-840" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-846', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"is"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-847" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-847', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-848" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-840', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-841" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-841', 'root', 'link-357');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-842" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-848', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-849" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-849', 'root', 'link-365');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-850" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-842', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"> </tt>
-<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase"></a><div id="ETreeXSLTExtFuncTestCase-def"><a name="L1244"></a><tt class="py-lineno">1244</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtFuncTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeXSLTExtFuncTestCase-expanded"><a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"> <tt class="py-docstring">"""Tests for XPath extension functions in XSLT."""</tt> </tt>
-<a name="L1246"></a><tt class="py-lineno">1246</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_extensions1"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions1-def"><a name="L1247"></a><tt class="py-lineno">1247</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_extensions1-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_extensions1');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtFuncTestCase.test_extensions1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_extensions1-expanded"><a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-843" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-850', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">"test"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase"></a><div id="ETreeXSLTExtFuncTestCase-def"><a name="L1265"></a><tt class="py-lineno">1265</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtFuncTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeXSLTExtFuncTestCase-expanded"><a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"> <tt class="py-docstring">"""Tests for XPath extension functions in XSLT."""</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_extensions1"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions1-def"><a name="L1268"></a><tt class="py-lineno">1268</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_extensions1-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_extensions1');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtFuncTestCase.test_extensions1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_extensions1-expanded"><a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-851" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-843', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"> <tt id="link-844" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-844', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-845" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-851', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"> <tt id="link-852" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-852', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-853" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-845', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:value-of select="myns:mytext(b)"/></A></xsl:template></tt> </tt>
-<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"> </tt>
-<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-846" class="py-name" targets="Method lxml.etree._Attrib.values()=lxml.etree._Attrib-class.html#values,Method lxml.etree._Element.values()=lxml.etree._Element-class.html#values,Method lxml.etree._IDDict.values()=lxml.etree._IDDict-class.html#values"><a title="lxml.etree._Attrib.values
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-853', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:value-of select="myns:mytext(b)"/></A></xsl:template></tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-854" class="py-name" targets="Method lxml.etree._Attrib.values()=lxml.etree._Attrib-class.html#values,Method lxml.etree._Element.values()=lxml.etree._Element-class.html#values,Method lxml.etree._IDDict.values()=lxml.etree._IDDict-class.html#values"><a title="lxml.etree._Attrib.values
lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-846', 'values', 'link-846');">values</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"> </tt>
-<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-847" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-847', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-848" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-848', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'mytext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">mytext</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-849" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-849', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"> <tt id="link-850" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-850', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>X</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_extensions2"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions2-def"><a name="L1264"></a><tt class="py-lineno">1264</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_extensions2-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_extensions2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtFuncTestCase.test_extensions2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_extensions2-expanded"><a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-851" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-854', 'values', 'link-854');">values</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-855" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-855', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-856" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-856', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'mytext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">mytext</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-857" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-857', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt id="link-858" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-858', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>X</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_extensions2"></a><div id="ETreeXSLTExtFuncTestCase.test_extensions2-def"><a name="L1285"></a><tt class="py-lineno">1285</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_extensions2-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_extensions2');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtFuncTestCase.test_extensions2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_extensions2-expanded"><a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-859" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-851', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"> <tt id="link-852" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-852', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-853" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-859', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> <tt id="link-860" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-860', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-861" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-853', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:value-of select="myns:mytext(b)"/></A></xsl:template></tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-854" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-861', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"><A><xsl:value-of select="myns:mytext(b)"/></A></xsl:template></tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt> <tt class="py-op">*</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-862" class="py-name"><a title="lxml.etree._Attrib.values
lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-854', 'values', 'link-846');">values</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"> <tt id="link-855" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-855', 'namespace', 'link-855');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-856" class="py-name"><a title="lxml.etree
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-862', 'values', 'link-854');">values</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"> <tt id="link-863" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-863', 'namespace', 'link-863');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-864" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-856', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-857" class="py-name" targets="Function lxml.etree.FunctionNamespace()=lxml.etree-module.html#FunctionNamespace"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-857', 'FunctionNamespace', 'link-857');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"> <tt id="link-858" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-858', 'namespace', 'link-855');">namespace</a></tt><tt class="py-op">[</tt><tt class="py-string">'mytext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mytext</tt> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-859" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-859', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-860" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-860', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-861" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-861', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt id="link-862" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-862', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>X</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment"></a><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-def"><a name="L1284"></a><tt class="py-lineno">1284</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment">test_variable_result_tree_fragment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-expanded"><a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-863" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-864', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-865" class="py-name" targets="Function lxml.etree.FunctionNamespace()=lxml.etree-module.html#FunctionNamespace"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-865', 'FunctionNamespace', 'link-865');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"> <tt id="link-866" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-866', 'namespace', 'link-863');">namespace</a></tt><tt class="py-op">[</tt><tt class="py-string">'mytext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mytext</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-867" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-867', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-868" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-868', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-869" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-869', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt id="link-870" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-870', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>X</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment"></a><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-def"><a name="L1305"></a><tt class="py-lineno">1305</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-toggle" onclick="return toggle('ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_variable_result_tree_fragment">test_variable_result_tree_fragment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtFuncTestCase.test_variable_result_tree_fragment-expanded"><a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-871" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-863', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><b/></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt id="link-864" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-864', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-865" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-871', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><b/></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> <tt id="link-872" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-872', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-873" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-865', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"><tt class="py-string"> <xsl:variable name="content"></tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"><tt class="py-string"> </xsl:variable></tt> </tt>
-<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"><tt class="py-string"> <A><xsl:value-of select="myns:mytext($content)"/></A></tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="b"><xsl:copy>BBB</xsl:copy></xsl:template></tt> </tt>
-<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"> </tt>
-<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-866" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-873', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-string"> <xsl:variable name="content"></tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"><tt class="py-string"> <xsl:apply-templates/></tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"><tt class="py-string"> </xsl:variable></tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"><tt class="py-string"> <A><xsl:value-of select="myns:mytext($content)"/></A></tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="b"><xsl:copy>BBB</xsl:copy></xsl:template></tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">mytext</tt><tt class="py-op">(</tt><tt class="py-param">ctxt</tt><tt class="py-op">,</tt> <tt class="py-param">values</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt id="link-874" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-866', 'value', 'link-866');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-867" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-874', 'value', 'link-874');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-875" class="py-name"><a title="lxml.etree._Attrib.values
lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-867', 'values', 'link-846');">values</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-868" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-868', 'hasattr', 'link-868');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-869" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-875', 'values', 'link-854');">values</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-876" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-876', 'hasattr', 'link-876');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-877" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-869', 'value', 'link-866');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt class="py-string">"%s is not an Element"</tt> <tt class="py-op">%</tt> <tt id="link-870" class="py-name" targets="Variable lxml.etree._LogEntry.type=lxml.etree._LogEntry-class.html#type,Variable lxml.html.InputElement.type=lxml.html.InputElement-class.html#type"><a title="lxml.etree._LogEntry.type
-lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-870', 'type', 'link-870');">type</a></tt><tt class="py-op">(</tt><tt id="link-871" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-877', 'value', 'link-874');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"> <tt class="py-string">"%s is not an Element"</tt> <tt class="py-op">%</tt> <tt id="link-878" class="py-name" targets="Variable lxml.etree._LogEntry.type=lxml.etree._LogEntry-class.html#type,Variable lxml.html.InputElement.type=lxml.html.InputElement-class.html#type"><a title="lxml.etree._LogEntry.type
+lxml.html.InputElement.type" class="py-name" href="#" onclick="return doclink('link-878', 'type', 'link-878');">type</a></tt><tt class="py-op">(</tt><tt id="link-879" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-871', 'value', 'link-866');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-872" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-879', 'value', 'link-874');">value</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-880" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-872', 'value', 'link-866');">value</a></tt><tt class="py-op">.</tt><tt id="link-873" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-880', 'value', 'link-874');">value</a></tt><tt class="py-op">.</tt><tt id="link-881" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-873', 'tag', 'link-360');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-874" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-881', 'tag', 'link-368');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-882" class="py-name"><a title="lxml.html.CheckboxGroup.value
lxml.html.InputElement.value
lxml.html.RadioGroup.value
lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-874', 'value', 'link-866');">value</a></tt><tt class="py-op">.</tt><tt id="link-875" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-882', 'value', 'link-874');">value</a></tt><tt class="py-op">.</tt><tt id="link-883" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-875', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'BBB'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-876" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-883', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'BBB'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'X'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-884" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-876', 'tag', 'link-360');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-877" class="py-name"><a title="lxml.etree._Attrib.values
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-884', 'tag', 'link-368');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-885" class="py-name"><a title="lxml.etree._Attrib.values
lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-877', 'values', 'link-846');">values</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> </tt>
-<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"> <tt id="link-878" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-878', 'namespace', 'link-855');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-879" class="py-name"><a title="lxml.etree
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-885', 'values', 'link-854');">values</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"> <tt id="link-886" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-886', 'namespace', 'link-863');">namespace</a></tt> <tt class="py-op">=</tt> <tt id="link-887" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-879', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-880" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-880', 'FunctionNamespace', 'link-857');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"> <tt id="link-881" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-881', 'namespace', 'link-855');">namespace</a></tt><tt class="py-op">[</tt><tt class="py-string">'mytext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mytext</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-882" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-882', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-883" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-883', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-884" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-884', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"> <tt id="link-885" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-885', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>bXb</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase"></a><div id="ETreeXSLTExtElementTestCase-def"><a name="L1316"></a><tt class="py-lineno">1316</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeXSLTExtElementTestCase-expanded"><a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"> <tt class="py-docstring">"""Tests for extension elements in XSLT."""</tt> </tt>
-<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element-def"><a name="L1319"></a><tt class="py-lineno">1319</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element-expanded"><a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-886" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-887', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-888" class="py-name"><a title="lxml.etree.FunctionNamespace" class="py-name" href="#" onclick="return doclink('link-888', 'FunctionNamespace', 'link-865');">FunctionNamespace</a></tt><tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"> <tt id="link-889" class="py-name"><a title="lxml.etree.QName.namespace" class="py-name" href="#" onclick="return doclink('link-889', 'namespace', 'link-863');">namespace</a></tt><tt class="py-op">[</tt><tt class="py-string">'mytext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">mytext</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-890" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-890', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-891" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-891', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-892" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-892', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"> <tt id="link-893" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-893', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>bXb</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase"></a><div id="ETreeXSLTExtElementTestCase-def"><a name="L1337"></a><tt class="py-lineno">1337</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ETreeXSLTExtElementTestCase-expanded"><a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"> <tt class="py-docstring">"""Tests for extension elements in XSLT."""</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element-def"><a name="L1340"></a><tt class="py-lineno">1340</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element-expanded"><a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-894" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-886', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"> <tt id="link-887" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-887', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-888" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-894', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"> <tt id="link-895" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-895', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-896" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-888', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
-<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"> <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt id="link-889" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-896', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-name">child</tt> <tt class="py-op">=</tt> <tt id="link-897" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-889', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-890" class="py-name" targets="Function lxml.etree.Element()=lxml.etree-module.html#Element,Function lxml.objectify.Element()=lxml.objectify-module.html#Element,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#Element,Class xml.etree.ElementTree.Element=xml.etree.ElementTree.Element-class.html"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-897', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-898" class="py-name" targets="Function lxml.etree.Element()=lxml.etree-module.html#Element,Function lxml.objectify.Element()=lxml.objectify-module.html#Element,Method lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element()=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#Element,Class xml.etree.ElementTree.Element=xml.etree.ElementTree.Element-class.html"><a title="lxml.etree.Element
lxml.objectify.Element
lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-890', 'Element', 'link-890');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">.</tt><tt id="link-891" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-898', 'Element', 'link-898');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">.</tt><tt id="link-899" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-891', 'text', 'link-364');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-892" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-899', 'text', 'link-372');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-900" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-892', 'text', 'link-364');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X'</tt> </tt>
-<a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-893" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-893', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1337"></a><tt class="py-lineno">1337</tt> <tt class="py-line"> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-894" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-894', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-895" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-895', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-896" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-896', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"> <tt id="link-897" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-897', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><b>X</b></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_doc_context"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-def"><a name="L1344"></a><tt class="py-lineno">1344</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_doc_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-expanded"><a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-898" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-900', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X'</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-901" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-901', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-902" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-902', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-903" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-903', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-904" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-904', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"> <tt id="link-905" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-905', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><b>X</b></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_doc_context"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-def"><a name="L1365"></a><tt class="py-lineno">1365</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_doc_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_doc_context-expanded"><a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-906" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-898', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"> <tt id="link-899" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-899', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-900" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-906', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt> <tt class="py-line"> <tt id="link-907" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-907', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-908" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-900', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
-<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt id="link-901" class="py-name" targets="Variable lxml.html.defs.tags=lxml.html.defs-module.html#tags"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-901', 'tags', 'link-901');">tags</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"> </tt>
-<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"> <tt id="link-902" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-902', 'tags', 'link-901');">tags</a></tt><tt class="py-op">.</tt><tt id="link-903" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-903', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-904" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-908', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"> <tt id="link-909" class="py-name" targets="Variable lxml.html.defs.tags=lxml.html.defs-module.html#tags"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-909', 'tags', 'link-909');">tags</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"> <tt id="link-910" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-910', 'tags', 'link-909');">tags</a></tt><tt class="py-op">.</tt><tt id="link-911" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-911', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-912" class="py-name"><a title="lxml.etree._Comment.tag
lxml.etree._Element.tag
lxml.etree._Entity.tag
lxml.etree._ProcessingInstruction.tag
lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-904', 'tag', 'link-360');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-905" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-905', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-906" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-906', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-907" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-907', 'tags', 'link-901');">tags</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'a'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1367"></a><tt class="py-lineno">1367</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-def"><a name="L1368"></a><tt class="py-lineno">1368</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-expanded"><a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-908" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-912', 'tag', 'link-368');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-913" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-913', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-914" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-914', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-915" class="py-name"><a title="lxml.html.defs.tags" class="py-name" href="#" onclick="return doclink('link-915', 'tags', 'link-909');">tags</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'a'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-def"><a name="L1389"></a><tt class="py-lineno">1389</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_comment_pi_context-expanded"><a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-916" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-908', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<?test toast?><a><!--a comment--><?another pi?></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt> <tt class="py-line"> <tt id="link-909" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-909', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-910" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-916', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<?test toast?><a><!--a comment--><?another pi?></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> <tt id="link-917" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-917', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-918" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-910', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"><tt class="py-string"> <ROOT><xsl:apply-templates /></ROOT></tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="comment()"></tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="processing-instruction()"></tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> </tt>
-<a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"> <tt id="link-911" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-918', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"><tt class="py-string"> <ROOT><xsl:apply-templates /></ROOT></tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="comment()"></tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="processing-instruction()"></tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt> <tt class="py-line"> <tt id="link-919" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-911', 'text', 'link-364');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> <tt id="link-912" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-919', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"> <tt id="link-920" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-912', 'text', 'link-364');">text</a></tt><tt class="py-op">.</tt><tt id="link-913" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-913', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-914" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-920', 'text', 'link-372');">text</a></tt><tt class="py-op">.</tt><tt id="link-921" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-921', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">input_node</tt><tt class="py-op">.</tt><tt id="link-922" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-914', 'text', 'link-364');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1392"></a><tt class="py-lineno">1392</tt> <tt class="py-line"> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-915" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-915', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-916" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-916', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-917" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-922', 'text', 'link-372');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-923" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-923', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-924" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-924', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-925" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-917', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'toast'</tt><tt class="py-op">,</tt> <tt class="py-string">'a comment'</tt><tt class="py-op">,</tt> <tt class="py-string">'pi'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context"></a><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-def"><a name="L1398"></a><tt class="py-lineno">1398</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase._test_extension_element_attribute_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_extension_element_attribute_context">_test_extension_element_attribute_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-expanded"><a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"> <tt class="py-comment"># currently not supported</tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-918" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-925', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'toast'</tt><tt class="py-op">,</tt> <tt class="py-string">'a comment'</tt><tt class="py-op">,</tt> <tt class="py-string">'pi'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context"></a><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-def"><a name="L1419"></a><tt class="py-lineno">1419</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase._test_extension_element_attribute_context');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_extension_element_attribute_context">_test_extension_element_attribute_context</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase._test_extension_element_attribute_context-expanded"><a name="L1420"></a><tt class="py-lineno">1420</tt> <tt class="py-line"> <tt class="py-comment"># currently not supported</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-926" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-918', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a test="A"><b attr="B"/></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"> <tt id="link-919" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-919', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-920" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-926', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a test="A"><b attr="B"/></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"> <tt id="link-927" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-927', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-928" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-920', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="@test"></tt> </tt>
-<a name="L1408"></a><tt class="py-lineno">1408</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="@attr"></tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"> <tt id="link-921" class="py-name"><a title="lxml.etree.QName.text
-lxml.etree._Element.text
-lxml.etree._Entity.text
-lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-921', 'text', 'link-364');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">attr_value</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"> <tt id="link-922" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-928', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="@test"></tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="@attr"></tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> <tt id="link-929" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-922', 'text', 'link-364');">text</a></tt><tt class="py-op">.</tt><tt id="link-923" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-923', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_value</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1420"></a><tt class="py-lineno">1420</tt> <tt class="py-line"> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-924" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-924', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-925" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-925', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-926" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-929', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt> <tt class="py-line"> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">attr_value</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"> <tt id="link-930" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-926', 'text', 'link-364');">text</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'B'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_content"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-def"><a name="L1426"></a><tt class="py-lineno">1426</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_content-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_content');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-expanded"><a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-927" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-927', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"> <tt id="link-928" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-928', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-929" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-929', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1437"></a><tt class="py-lineno">1437</tt> <tt class="py-line"> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-930" class="py-name" targets="Method lxml.etree._Element.extend()=lxml.etree._Element-class.html#extend"><a title="lxml.etree._Element.extend" class="py-name" href="#" onclick="return doclink('link-930', 'extend', 'link-930');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-930', 'text', 'link-372');">text</a></tt><tt class="py-op">.</tt><tt id="link-931" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-931', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_value</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1441"></a><tt class="py-lineno">1441</tt> <tt class="py-line"> </tt>
<a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
<a name="L1443"></a><tt class="py-lineno">1443</tt> <tt class="py-line"> </tt>
-<a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-931" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-931', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-932" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-932', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-933" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-933', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"> <tt id="link-934" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-934', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><y>Y</y><z/></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-def"><a name="L1448"></a><tt class="py-lineno">1448</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-expanded"><a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-935" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-932" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-932', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-933" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-933', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-934" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-934', 'text', 'link-372');">text</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'B'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_content"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-def"><a name="L1447"></a><tt class="py-lineno">1447</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_content-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_content');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_content-expanded"><a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-935" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-935', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"> <tt id="link-936" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-936', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-937" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> <tt id="link-936" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-936', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-937" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-937', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x" /></tt> </tt>
-<a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z">XYZ</xsl:template></tt> </tt>
-<a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">result</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-938" class="py-name" targets="Method lxml.etree.XSLTExtension.apply_templates()=lxml.etree.XSLTExtension-class.html#apply_templates"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-938', 'apply_templates', 'link-938');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-939" class="py-name"><a title="lxml.html.basestring
-lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-939', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-940" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-940', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-941" class="py-name"><a title="lxml.etree.Element
+<a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-938" class="py-name" targets="Method lxml.etree._Element.extend()=lxml.etree._Element-class.html#extend"><a title="lxml.etree._Element.extend" class="py-name" href="#" onclick="return doclink('link-938', 'extend', 'link-938');">extend</a></tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">self_node</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"> </tt>
+<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-939" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-939', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-940" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-940', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-941" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-941', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"> <tt id="link-942" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-942', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><y>Y</y><z/></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-def"><a name="L1469"></a><tt class="py-lineno">1469</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates-expanded"><a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-943" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-943', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"> <tt id="link-944" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-944', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-945" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-945', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x" /></tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z">XYZ</xsl:template></tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">result</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-946" class="py-name" targets="Method lxml.etree.XSLTExtension.apply_templates()=lxml.etree.XSLTExtension-class.html#apply_templates"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-946', 'apply_templates', 'link-946');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-947" class="py-name"><a title="lxml.html.basestring
+lxml.html.clean.basestring" class="py-name" href="#" onclick="return doclink('link-947', 'basestring', 'link-11');">basestring</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-948" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-948', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-949" class="py-name"><a title="lxml.etree.Element
lxml.objectify.Element
lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-941', 'Element', 'link-890');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-942" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-949', 'Element', 'link-898');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"T"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-950" class="py-name"><a title="lxml.etree.QName.text
lxml.etree._Element.text
lxml.etree._Entity.text
lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-942', 'text', 'link-364');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
-<a name="L1469"></a><tt class="py-lineno">1469</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-943" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-943', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"> </tt>
-<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-944" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-944', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-945" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-945', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-946" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-946', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> <tt id="link-947" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-947', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><T>Y</T><T>XYZ</T></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-def"><a name="L1479"></a><tt class="py-lineno">1479</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-expanded"><a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-948" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-948', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"> <tt id="link-949" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-949', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-950" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-950', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x" /></tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z">XYZ</xsl:template></tt> </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"> </tt>
-<a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
-<a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-951" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-951', 'apply_templates', 'link-938');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"> </tt>
-<a name="L1498"></a><tt class="py-lineno">1498</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-952" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-952', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-953" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-953', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-954" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-954', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</tt> <tt class="py-line"> <tt id="link-955" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-955', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>YXYZ</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-def"><a name="L1504"></a><tt class="py-lineno">1504</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-expanded"><a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-956" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-950', 'text', 'link-372');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-951" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-951', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-952" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-952', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-953" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-953', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-954" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-954', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt> <tt class="py-line"> <tt id="link-955" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-955', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><T>Y</T><T>XYZ</T></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-def"><a name="L1500"></a><tt class="py-lineno">1500</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node-expanded"><a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-956" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-956', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"> <tt id="link-957" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-957', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-958" class="py-name"><a title="lxml.etree._ElementTree.parse
+<a name="L1502"></a><tt class="py-lineno">1502</tt> <tt class="py-line"> <tt id="link-957" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-957', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-958" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-958', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"><tt class="py-string"> <myns:myext><x>X</x><y>Y</y><z/></myns:myext></tt> </tt>
-<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x"><xsl:processing-instruction name="test">TEST</xsl:processing-instruction></xsl:template></tt> </tt>
-<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="y"><Y>XYZ</Y></xsl:template></tt> </tt>
-<a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z"><xsl:comment>TEST</xsl:comment></xsl:template></tt> </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> </tt>
-<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
-<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-959" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-959', 'apply_templates', 'link-938');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> </tt>
-<a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1525"></a><tt class="py-lineno">1525</tt> <tt class="py-line"> </tt>
-<a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-960" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-960', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-961" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-961', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-962" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-962', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-963" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-963', 'tostring', 'link-236');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"> <tt id="link-964" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-964', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<?test TEST?><Y>XYZ</Y><!--TEST-->'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-def"><a name="L1530"></a><tt class="py-lineno">1530</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-expanded"><a name="L1531"></a><tt class="py-lineno">1531</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-965" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-965', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>E</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"> <tt id="link-966" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-966', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-967" class="py-name"><a title="lxml.etree._ElementTree.parse
-lxml.etree.parse
-lxml.html.ElementSoup.parse
-lxml.html.html5parser.parse
-lxml.html.soupparser.parse
-lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-967', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1538"></a><tt class="py-lineno">1538</tt> <tt class="py-line"><tt class="py-string"> <xsl:variable name="testvar">yo</xsl:variable></tt> </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</tt> <tt class="py-line"><tt class="py-string"> <A></tt> </tt>
-<a name="L1540"></a><tt class="py-lineno">1540</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
-<a name="L1541"></a><tt class="py-lineno">1541</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="attr"></tt> </tt>
-<a name="L1542"></a><tt class="py-lineno">1542</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="$testvar" /></tt> </tt>
-<a name="L1543"></a><tt class="py-lineno">1543</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
-<a name="L1544"></a><tt class="py-lineno">1544</tt> <tt class="py-line"><tt class="py-string"> <B></tt> </tt>
-<a name="L1545"></a><tt class="py-lineno">1545</tt> <tt class="py-line"><tt class="py-string"> <xsl:choose></tt> </tt>
-<a name="L1546"></a><tt class="py-lineno">1546</tt> <tt class="py-line"><tt class="py-string"> <xsl:when test="1 = 2"><C/></xsl:when></tt> </tt>
-<a name="L1547"></a><tt class="py-lineno">1547</tt> <tt class="py-line"><tt class="py-string"> <xsl:otherwise><D><xsl:value-of select="b/text()" /></D></xsl:otherwise></tt> </tt>
-<a name="L1548"></a><tt class="py-lineno">1548</tt> <tt class="py-line"><tt class="py-string"> </xsl:choose></tt> </tt>
-<a name="L1549"></a><tt class="py-lineno">1549</tt> <tt class="py-line"><tt class="py-string"> </B></tt> </tt>
-<a name="L1550"></a><tt class="py-lineno">1550</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
-<a name="L1551"></a><tt class="py-lineno">1551</tt> <tt class="py-line"><tt class="py-string"> </A></tt> </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1553"></a><tt class="py-lineno">1553</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1554"></a><tt class="py-lineno">1554</tt> <tt class="py-line"> </tt>
-<a name="L1555"></a><tt class="py-lineno">1555</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1556"></a><tt class="py-lineno">1556</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1557"></a><tt class="py-lineno">1557</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-968" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-968', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-969" class="py-name"><a title="lxml.etree.Element
+<a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A></tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x" /></tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z">XYZ</xsl:template></tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-959" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-959', 'apply_templates', 'link-946');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-960" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-960', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-961" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-961', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-962" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-962', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> <tt id="link-963" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-963', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A>YXYZ</A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-def"><a name="L1525"></a><tt class="py-lineno">1525</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_apply_templates_target_node_doc-expanded"><a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-964" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-964', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt id="link-965" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-965', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-966" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-966', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"><tt class="py-string"> <myns:myext><x>X</x><y>Y</y><z/></myns:myext></tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="x"><xsl:processing-instruction name="test">TEST</xsl:processing-instruction></xsl:template></tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="y"><Y>XYZ</Y></xsl:template></tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="z"><xsl:comment>TEST</xsl:comment></xsl:template></tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt> <tt class="py-line"> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self_node</tt><tt class="py-op">:</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-967" class="py-name"><a title="lxml.etree.XSLTExtension.apply_templates" class="py-name" href="#" onclick="return doclink('link-967', 'apply_templates', 'link-946');">apply_templates</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1544"></a><tt class="py-lineno">1544</tt> <tt class="py-line"> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt> <tt class="py-line"> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-968" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-968', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-969" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-969', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-970" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-970', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-971', 'tostring', 'link-244');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt> <tt class="py-line"> <tt id="link-972" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-972', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<?test TEST?><Y>XYZ</Y><!--TEST-->'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1550"></a><tt class="py-lineno">1550</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-def"><a name="L1551"></a><tt class="py-lineno">1551</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children-expanded"><a name="L1552"></a><tt class="py-lineno">1552</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-973" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-973', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>E</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt> <tt class="py-line"> <tt id="link-974" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-974', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-975" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.etree.parse
+lxml.html.ElementSoup.parse
+lxml.html.html5parser.parse
+lxml.html.soupparser.parse
+lxml.objectify.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-975', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt> <tt class="py-line"><tt class="py-string"> <xsl:variable name="testvar">yo</xsl:variable></tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt> <tt class="py-line"><tt class="py-string"> <A></tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt> <tt class="py-line"><tt class="py-string"> <xsl:attribute name="attr"></tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt> <tt class="py-line"><tt class="py-string"> <xsl:value-of select="$testvar" /></tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt> <tt class="py-line"><tt class="py-string"> </xsl:attribute></tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt> <tt class="py-line"><tt class="py-string"> <B></tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt> <tt class="py-line"><tt class="py-string"> <xsl:choose></tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt> <tt class="py-line"><tt class="py-string"> <xsl:when test="1 = 2"><C/></xsl:when></tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt> <tt class="py-line"><tt class="py-string"> <xsl:otherwise><D><xsl:value-of select="b/text()" /></D></xsl:otherwise></tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt> <tt class="py-line"><tt class="py-string"> </xsl:choose></tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt> <tt class="py-line"><tt class="py-string"> </B></tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt> <tt class="py-line"><tt class="py-string"> </A></tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt> <tt class="py-line"> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-976" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-976', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-977" class="py-name"><a title="lxml.etree.Element
lxml.objectify.Element
lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-969', 'Element', 'link-890');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1558"></a><tt class="py-lineno">1558</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-970" class="py-name" targets="Method lxml.etree.XSLTExtension.process_children()=lxml.etree.XSLTExtension-class.html#process_children"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-970', 'process_children', 'link-970');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L1559"></a><tt class="py-lineno">1559</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-971', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1560"></a><tt class="py-lineno">1560</tt> <tt class="py-line"> </tt>
-<a name="L1561"></a><tt class="py-lineno">1561</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1562"></a><tt class="py-lineno">1562</tt> <tt class="py-line"> </tt>
-<a name="L1563"></a><tt class="py-lineno">1563</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-972" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-972', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-973" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-973', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1564"></a><tt class="py-lineno">1564</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-974" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-974', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1565"></a><tt class="py-lineno">1565</tt> <tt class="py-line"> <tt id="link-975" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-975', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><MYattr="yo"><B><D>E</D></B></MY></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1566"></a><tt class="py-lineno">1566</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-def"><a name="L1567"></a><tt class="py-lineno">1567</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-expanded"><a name="L1568"></a><tt class="py-lineno">1568</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-976" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-977', 'Element', 'link-898');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-978" class="py-name" targets="Method lxml.etree.XSLTExtension.process_children()=lxml.etree.XSLTExtension-class.html#process_children"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-978', 'process_children', 'link-978');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-979" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-979', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1581"></a><tt class="py-lineno">1581</tt> <tt class="py-line"> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt> <tt class="py-line"> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-980" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-980', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-981" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-981', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-982" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-982', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt> <tt class="py-line"> <tt id="link-983" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-983', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A><MYattr="yo"><B><D>E</D></B></MY></A>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1587"></a><tt class="py-lineno">1587</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-def"><a name="L1588"></a><tt class="py-lineno">1588</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_append_only-expanded"><a name="L1589"></a><tt class="py-lineno">1589</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-984" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-976', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1569"></a><tt class="py-lineno">1569</tt> <tt class="py-line"> <tt id="link-977" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-977', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-978" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-984', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt> <tt class="py-line"> <tt id="link-985" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-985', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-986" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-978', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1570"></a><tt class="py-lineno">1570</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1571"></a><tt class="py-lineno">1571</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1572"></a><tt class="py-lineno">1572</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1573"></a><tt class="py-lineno">1573</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1574"></a><tt class="py-lineno">1574</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1575"></a><tt class="py-lineno">1575</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
-<a name="L1576"></a><tt class="py-lineno">1576</tt> <tt class="py-line"><tt class="py-string"> <A/></tt> </tt>
-<a name="L1577"></a><tt class="py-lineno">1577</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
-<a name="L1578"></a><tt class="py-lineno">1578</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1579"></a><tt class="py-lineno">1579</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1580"></a><tt class="py-lineno">1580</tt> <tt class="py-line"> </tt>
-<a name="L1581"></a><tt class="py-lineno">1581</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1582"></a><tt class="py-lineno">1582</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1583"></a><tt class="py-lineno">1583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-979" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-979', 'process_children', 'link-970');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1584"></a><tt class="py-lineno">1584</tt> <tt class="py-line"> </tt>
-<a name="L1585"></a><tt class="py-lineno">1585</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1586"></a><tt class="py-lineno">1586</tt> <tt class="py-line"> </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-980" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-980', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-981" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-981', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1588"></a><tt class="py-lineno">1588</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-982" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-982', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1589"></a><tt class="py-lineno">1589</tt> <tt class="py-line"> <tt id="link-983" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-983', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1590"></a><tt class="py-lineno">1590</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-def"><a name="L1591"></a><tt class="py-lineno">1591</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-expanded"><a name="L1592"></a><tt class="py-lineno">1592</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-984" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-986', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt> <tt class="py-line"><tt class="py-string"> <A/></tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt> <tt class="py-line"> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-987" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-987', 'process_children', 'link-978');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">output_parent</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1605"></a><tt class="py-lineno">1605</tt> <tt class="py-line"> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt> <tt class="py-line"> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-988', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-989" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-989', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-990', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt> <tt class="py-line"> <tt id="link-991" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-991', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<A/>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1611"></a><tt class="py-lineno">1611</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-def"><a name="L1612"></a><tt class="py-lineno">1612</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_to_read_only_raise-expanded"><a name="L1613"></a><tt class="py-lineno">1613</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-992" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-984', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1593"></a><tt class="py-lineno">1593</tt> <tt class="py-line"> <tt id="link-985" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-985', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-986" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-992', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt> <tt class="py-line"> <tt id="link-993" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-993', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-994" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-986', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1595"></a><tt class="py-lineno">1595</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1596"></a><tt class="py-lineno">1596</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1597"></a><tt class="py-lineno">1597</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1598"></a><tt class="py-lineno">1598</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1599"></a><tt class="py-lineno">1599</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
-<a name="L1600"></a><tt class="py-lineno">1600</tt> <tt class="py-line"><tt class="py-string"> <A/></tt> </tt>
-<a name="L1601"></a><tt class="py-lineno">1601</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
-<a name="L1602"></a><tt class="py-lineno">1602</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1603"></a><tt class="py-lineno">1603</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</tt> <tt class="py-line"> </tt>
-<a name="L1605"></a><tt class="py-lineno">1605</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1606"></a><tt class="py-lineno">1606</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1607"></a><tt class="py-lineno">1607</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-987" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-987', 'process_children', 'link-970');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">self_node</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1608"></a><tt class="py-lineno">1608</tt> <tt class="py-line"> </tt>
-<a name="L1609"></a><tt class="py-lineno">1609</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt> <tt class="py-line"> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-988', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-989" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-989', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1612"></a><tt class="py-lineno">1612</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-def"><a name="L1613"></a><tt class="py-lineno">1613</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-expanded"><a name="L1614"></a><tt class="py-lineno">1614</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-994', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt> <tt class="py-line"><tt class="py-string"> <A/></tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt> <tt class="py-line"> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-995" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-995', 'process_children', 'link-978');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">self_node</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1629"></a><tt class="py-lineno">1629</tt> <tt class="py-line"> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt> <tt class="py-line"> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-996" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-996', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-997" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-997', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1633"></a><tt class="py-lineno">1633</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-def"><a name="L1634"></a><tt class="py-lineno">1634</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_process_children_with_subextension_element-expanded"><a name="L1635"></a><tt class="py-lineno">1635</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-998" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-990', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt> <tt class="py-line"> <tt id="link-991" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-991', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-992" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-998', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a/>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt> <tt class="py-line"> <tt id="link-999" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-999', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1000" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-992', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1619"></a><tt class="py-lineno">1619</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
-<a name="L1620"></a><tt class="py-lineno">1620</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1621"></a><tt class="py-lineno">1621</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
-<a name="L1622"></a><tt class="py-lineno">1622</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><B/></myns:myext></A></tt> </tt>
-<a name="L1623"></a><tt class="py-lineno">1623</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
-<a name="L1624"></a><tt class="py-lineno">1624</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1625"></a><tt class="py-lineno">1625</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1626"></a><tt class="py-lineno">1626</tt> <tt class="py-line"> </tt>
-<a name="L1627"></a><tt class="py-lineno">1627</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1628"></a><tt class="py-lineno">1628</tt> <tt class="py-line"> <tt class="py-name">callback_call_counter</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L1629"></a><tt class="py-lineno">1629</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1630"></a><tt class="py-lineno">1630</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callback_call_counter</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1631"></a><tt class="py-lineno">1631</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-993" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1000', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"></tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt> <tt class="py-line"><tt class="py-string"> <myns:myext></tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext><B/></myns:myext></A></tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt> <tt class="py-line"><tt class="py-string"> </myns:myext></tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt> <tt class="py-line"> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt> <tt class="py-line"> <tt class="py-name">callback_call_counter</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callback_call_counter</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt> <tt class="py-line"> <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1001" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-993', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-994" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1001', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1002" class="py-name"><a title="lxml.etree.Element
lxml.objectify.Element
lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-994', 'Element', 'link-890');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">=</tt><tt id="link-995" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-995', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callback_call_counter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-996" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-996', 'process_children', 'link-970');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L1633"></a><tt class="py-lineno">1633</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-997" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-997', 'append', 'link-563');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1634"></a><tt class="py-lineno">1634</tt> <tt class="py-line"> </tt>
-<a name="L1635"></a><tt class="py-lineno">1635</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</tt> <tt class="py-line"> </tt>
-<a name="L1637"></a><tt class="py-lineno">1637</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-998" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-998', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-999" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-999', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1000" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-1000', '_rootstring', 'link-319');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1639"></a><tt class="py-lineno">1639</tt> <tt class="py-line"> <tt id="link-1001" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1001', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<MYn="1"><A><MYn="2"><B/></MY></A></MY>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1640"></a><tt class="py-lineno">1640</tt> <tt class="py-line"> </tt>
-<a name="ETreeXSLTExtElementTestCase.test_extension_element_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-def"><a name="L1641"></a><tt class="py-lineno">1641</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_raise-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_raise');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-expanded"><a name="L1642"></a><tt class="py-lineno">1642</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1002" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1002', 'Element', 'link-898');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'MY'</tt><tt class="py-op">,</tt> <tt class="py-name">n</tt><tt class="py-op">=</tt><tt id="link-1003" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1003', 'str', 'link-10');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">callback_call_counter</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1004" class="py-name"><a title="lxml.etree.XSLTExtension.process_children" class="py-name" href="#" onclick="return doclink('link-1004', 'process_children', 'link-978');">process_children</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt> <tt class="py-line"> <tt class="py-name">output_parent</tt><tt class="py-op">.</tt><tt id="link-1005" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1005', 'append', 'link-571');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1655"></a><tt class="py-lineno">1655</tt> <tt class="py-line"> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1657"></a><tt class="py-lineno">1657</tt> <tt class="py-line"> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1006" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1006', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">(</tt><tt id="link-1007" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1007', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1008" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-1008', '_rootstring', 'link-327');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt> <tt class="py-line"> <tt id="link-1009" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1009', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'<MYn="1"><A><MYn="2"><B/></MY></A></MY>'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1661"></a><tt class="py-lineno">1661</tt> <tt class="py-line"> </tt>
+<a name="ETreeXSLTExtElementTestCase.test_extension_element_raise"></a><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-def"><a name="L1662"></a><tt class="py-lineno">1662</tt> <a class="py-toggle" href="#" id="ETreeXSLTExtElementTestCase.test_extension_element_raise-toggle" onclick="return toggle('ETreeXSLTExtElementTestCase.test_extension_element_raise');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeXSLTExtElementTestCase.test_extension_element_raise-expanded"><a name="L1663"></a><tt class="py-lineno">1663</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1010" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1002', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1643"></a><tt class="py-lineno">1643</tt> <tt class="py-line"> <tt id="link-1003" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1003', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1004" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1010', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt> <tt class="py-line"> <tt id="link-1011" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1011', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1012" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1004', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
-<a name="L1646"></a><tt class="py-lineno">1646</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
-<a name="L1647"></a><tt class="py-lineno">1647</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
-<a name="L1649"></a><tt class="py-lineno">1649</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
-<a name="L1650"></a><tt class="py-lineno">1650</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
-<a name="L1651"></a><tt class="py-lineno">1651</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1653"></a><tt class="py-lineno">1653</tt> <tt class="py-line"> </tt>
-<a name="L1654"></a><tt class="py-lineno">1654</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyError</tt><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1655"></a><tt class="py-lineno">1655</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1656"></a><tt class="py-lineno">1656</tt> <tt class="py-line"> </tt>
-<a name="L1657"></a><tt class="py-lineno">1657</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1658"></a><tt class="py-lineno">1658</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1659"></a><tt class="py-lineno">1659</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">MyError</tt><tt class="py-op">(</tt><tt class="py-string">"expected!"</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1660"></a><tt class="py-lineno">1660</tt> <tt class="py-line"> </tt>
-<a name="L1661"></a><tt class="py-lineno">1661</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
-<a name="L1662"></a><tt class="py-lineno">1662</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">MyError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1005" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1005', 'xslt', 'link-226');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1006" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1006', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1663"></a><tt class="py-lineno">1663</tt> <tt class="py-line"> </tt>
-<a name="L1664"></a><tt class="py-lineno">1664</tt> <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase"></a><div id="Py3XSLTTestCase-def"><a name="L1665"></a><tt class="py-lineno">1665</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase-toggle" onclick="return toggle('Py3XSLTTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Py3XSLTTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Py3XSLTTestCase-expanded"><a name="L1666"></a><tt class="py-lineno">1666</tt> <tt class="py-line"> <tt class="py-docstring">"""XSLT tests for etree under Python 3"""</tt> </tt>
-<a name="L1667"></a><tt class="py-lineno">1667</tt> <tt class="py-line"> </tt>
-<a name="L1668"></a><tt class="py-lineno">1668</tt> <tt class="py-line"> <tt id="link-1007" class="py-name" targets="Variable lxml.tests.test_css.CSSTestCase.pytestmark=lxml.tests.test_css.CSSTestCase-class.html#pytestmark,Variable lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark=lxml.tests.test_xslt.Py3XSLTTestCase-class.html#pytestmark"><a title="lxml.tests.test_css.CSSTestCase.pytestmark
-lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark" class="py-name" href="#" onclick="return doclink('link-1007', 'pytestmark', 'link-1007');">pytestmark</a></tt> <tt class="py-op">=</tt> <tt id="link-1008" class="py-name"><a title="lxml.tests.common_imports.skipif" class="py-name" href="#" onclick="return doclink('link-1008', 'skipif', 'link-22');">skipif</a></tt><tt class="py-op">(</tt><tt class="py-string">'sys.version_info < (3,0)'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1669"></a><tt class="py-lineno">1669</tt> <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_bytes"></a><div id="Py3XSLTTestCase.test_xslt_result_bytes-def"><a name="L1670"></a><tt class="py-lineno">1670</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_bytes-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_bytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytes">test_xslt_result_bytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Py3XSLTTestCase.test_xslt_result_bytes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_bytes-expanded"><a name="L1671"></a><tt class="py-lineno">1671</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1009" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1012', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt> <tt class="py-line"><tt class="py-string"> xmlns:myns="testns"</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt> <tt class="py-line"><tt class="py-string"> extension-element-prefixes="myns"</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt> <tt class="py-line"><tt class="py-string"> exclude-result-prefixes="myns"></tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="a"></tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt> <tt class="py-line"><tt class="py-string"> <A><myns:myext>b</myns:myext></A></tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt> <tt class="py-line"> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyError</tt><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1677"></a><tt class="py-lineno">1677</tt> <tt class="py-line"> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-base-class">etree</tt><tt class="py-op">.</tt><tt class="py-base-class">XSLTExtension</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">execute</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">context</tt><tt class="py-op">,</tt> <tt class="py-param">self_node</tt><tt class="py-op">,</tt> <tt class="py-param">input_node</tt><tt class="py-op">,</tt> <tt class="py-param">output_parent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">MyError</tt><tt class="py-op">(</tt><tt class="py-string">"expected!"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1681"></a><tt class="py-lineno">1681</tt> <tt class="py-line"> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt> <tt class="py-line"> <tt class="py-name">extensions</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> <tt class="py-op">(</tt><tt class="py-string">'testns'</tt><tt class="py-op">,</tt> <tt class="py-string">'myext'</tt><tt class="py-op">)</tt> <tt class="py-op">:</tt> <tt class="py-name">MyExt</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">}</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">MyError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1013" class="py-name"><a title="lxml.etree._ElementTree.xslt" class="py-name" href="#" onclick="return doclink('link-1013', 'xslt', 'link-234');">xslt</a></tt><tt class="py-op">,</tt> <tt id="link-1014" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1014', 'style', 'link-24');">style</a></tt><tt class="py-op">,</tt> <tt class="py-name">extensions</tt><tt class="py-op">=</tt><tt class="py-name">extensions</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1684"></a><tt class="py-lineno">1684</tt> <tt class="py-line"> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt> <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase"></a><div id="Py3XSLTTestCase-def"><a name="L1686"></a><tt class="py-lineno">1686</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase-toggle" onclick="return toggle('Py3XSLTTestCase');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">HelperTestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Py3XSLTTestCase-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Py3XSLTTestCase-expanded"><a name="L1687"></a><tt class="py-lineno">1687</tt> <tt class="py-line"> <tt class="py-docstring">"""XSLT tests for etree under Python 3"""</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt> <tt class="py-line"> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt> <tt class="py-line"> <tt id="link-1015" class="py-name" targets="Variable lxml.tests.test_css.CSSTestCase.pytestmark=lxml.tests.test_css.CSSTestCase-class.html#pytestmark,Variable lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark=lxml.tests.test_xslt.Py3XSLTTestCase-class.html#pytestmark"><a title="lxml.tests.test_css.CSSTestCase.pytestmark
+lxml.tests.test_xslt.Py3XSLTTestCase.pytestmark" class="py-name" href="#" onclick="return doclink('link-1015', 'pytestmark', 'link-1015');">pytestmark</a></tt> <tt class="py-op">=</tt> <tt id="link-1016" class="py-name"><a title="lxml.tests.common_imports.skipif" class="py-name" href="#" onclick="return doclink('link-1016', 'skipif', 'link-22');">skipif</a></tt><tt class="py-op">(</tt><tt class="py-string">'sys.version_info < (3,0)'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt> <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase.test_xslt_result_bytes"></a><div id="Py3XSLTTestCase.test_xslt_result_bytes-def"><a name="L1691"></a><tt class="py-lineno">1691</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_bytes-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_bytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytes">test_xslt_result_bytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Py3XSLTTestCase.test_xslt_result_bytes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_bytes-expanded"><a name="L1692"></a><tt class="py-lineno">1692</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1017" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1009', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1672"></a><tt class="py-lineno">1672</tt> <tt class="py-line"> <tt id="link-1010" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1010', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1011" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1017', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt> <tt class="py-line"> <tt id="link-1018" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1018', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1019" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1011', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1673"></a><tt class="py-lineno">1673</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1674"></a><tt class="py-lineno">1674</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1675"></a><tt class="py-lineno">1675</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1677"></a><tt class="py-lineno">1677</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L1678"></a><tt class="py-lineno">1678</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1679"></a><tt class="py-lineno">1679</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1680"></a><tt class="py-lineno">1680</tt> <tt class="py-line"> </tt>
-<a name="L1681"></a><tt class="py-lineno">1681</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1012" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1019', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt> <tt class="py-line"> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1020" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1012', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1013" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1013', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1014" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1014', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1682"></a><tt class="py-lineno">1682</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1683"></a><tt class="py-lineno">1683</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1015" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1015', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1684"></a><tt class="py-lineno">1684</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L1685"></a><tt class="py-lineno">1685</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L1686"></a><tt class="py-lineno">1686</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1687"></a><tt class="py-lineno">1687</tt> <tt class="py-line"> <tt class="py-name">bytes</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1688"></a><tt class="py-lineno">1688</tt> <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_bytearray"></a><div id="Py3XSLTTestCase.test_xslt_result_bytearray-def"><a name="L1689"></a><tt class="py-lineno">1689</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_bytearray-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_bytearray');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytearray">test_xslt_result_bytearray</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Py3XSLTTestCase.test_xslt_result_bytearray-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_bytearray-expanded"><a name="L1690"></a><tt class="py-lineno">1690</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1016" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1020', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1021" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1021', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1022" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1022', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1023" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1023', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt> <tt class="py-line"> <tt class="py-name">bytes</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1709"></a><tt class="py-lineno">1709</tt> <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase.test_xslt_result_bytearray"></a><div id="Py3XSLTTestCase.test_xslt_result_bytearray-def"><a name="L1710"></a><tt class="py-lineno">1710</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_bytearray-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_bytearray');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_bytearray">test_xslt_result_bytearray</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Py3XSLTTestCase.test_xslt_result_bytearray-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_bytearray-expanded"><a name="L1711"></a><tt class="py-lineno">1711</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1024" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1016', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1691"></a><tt class="py-lineno">1691</tt> <tt class="py-line"> <tt id="link-1017" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1017', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1018" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1024', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt> <tt class="py-line"> <tt id="link-1025" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1025', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1026" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1018', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1692"></a><tt class="py-lineno">1692</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1693"></a><tt class="py-lineno">1693</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1694"></a><tt class="py-lineno">1694</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L1697"></a><tt class="py-lineno">1697</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1698"></a><tt class="py-lineno">1698</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1699"></a><tt class="py-lineno">1699</tt> <tt class="py-line"> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1019" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1026', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt> <tt class="py-line"> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1027" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1019', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1020" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1020', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1021" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1021', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1701"></a><tt class="py-lineno">1701</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1702"></a><tt class="py-lineno">1702</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1022" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1022', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1703"></a><tt class="py-lineno">1703</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L1704"></a><tt class="py-lineno">1704</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L1705"></a><tt class="py-lineno">1705</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt> <tt class="py-line"> <tt class="py-name">bytearray</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1707"></a><tt class="py-lineno">1707</tt> <tt class="py-line"> </tt>
-<a name="Py3XSLTTestCase.test_xslt_result_memoryview"></a><div id="Py3XSLTTestCase.test_xslt_result_memoryview-def"><a name="L1708"></a><tt class="py-lineno">1708</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_memoryview-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_memoryview');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_memoryview">test_xslt_result_memoryview</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Py3XSLTTestCase.test_xslt_result_memoryview-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_memoryview-expanded"><a name="L1709"></a><tt class="py-lineno">1709</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1023" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1027', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1028" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1028', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1029" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1029', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1030" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1030', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt> <tt class="py-line"> <tt class="py-name">bytearray</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1728"></a><tt class="py-lineno">1728</tt> <tt class="py-line"> </tt>
+<a name="Py3XSLTTestCase.test_xslt_result_memoryview"></a><div id="Py3XSLTTestCase.test_xslt_result_memoryview-def"><a name="L1729"></a><tt class="py-lineno">1729</tt> <a class="py-toggle" href="#" id="Py3XSLTTestCase.test_xslt_result_memoryview-toggle" onclick="return toggle('Py3XSLTTestCase.test_xslt_result_memoryview');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html#test_xslt_result_memoryview">test_xslt_result_memoryview</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Py3XSLTTestCase.test_xslt_result_memoryview-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="Py3XSLTTestCase.test_xslt_result_memoryview-expanded"><a name="L1730"></a><tt class="py-lineno">1730</tt> <tt class="py-line"> <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1031" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1023', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1710"></a><tt class="py-lineno">1710</tt> <tt class="py-line"> <tt id="link-1024" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1024', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1025" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1031', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'<a><b>B</b><c>C</c></a>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt> <tt class="py-line"> <tt id="link-1032" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1032', 'style', 'link-24');">style</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1033" class="py-name"><a title="lxml.etree._ElementTree.parse
lxml.etree.parse
lxml.html.ElementSoup.parse
lxml.html.html5parser.parse
lxml.html.soupparser.parse
lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1025', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1711"></a><tt class="py-lineno">1711</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
-<a name="L1712"></a><tt class="py-lineno">1712</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
-<a name="L1713"></a><tt class="py-lineno">1713</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
-<a name="L1714"></a><tt class="py-lineno">1714</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
-<a name="L1715"></a><tt class="py-lineno">1715</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
-<a name="L1716"></a><tt class="py-lineno">1716</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
-<a name="L1717"></a><tt class="py-lineno">1717</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1718"></a><tt class="py-lineno">1718</tt> <tt class="py-line"> </tt>
-<a name="L1719"></a><tt class="py-lineno">1719</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1026" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-1033', 'parse', 'link-23');">parse</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1732"></a><tt class="py-lineno">1732</tt> <tt class="py-line"><tt class="py-string"><xsl:stylesheet version="1.0"</tt> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt> <tt class="py-line"><tt class="py-string"> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"></tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="*" /></tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt> <tt class="py-line"><tt class="py-string"> <xsl:template match="/"></tt> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt> <tt class="py-line"><tt class="py-string"> <foo><xsl:value-of select="/a/b/text()" /></foo></tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt> <tt class="py-line"><tt class="py-string"> </xsl:template></tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt> <tt class="py-line"><tt class="py-string"></xsl:stylesheet>'''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt> <tt class="py-line"> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt> <tt class="py-line"> <tt class="py-name">st</tt> <tt class="py-op">=</tt> <tt id="link-1034" class="py-name"><a title="lxml.etree
lxml.sax.ElementTreeContentHandler.etree
lxml.tests.test_elementtree.CElementTreeTestCase.etree
lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1026', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1027" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
-lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1027', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1028" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1028', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1720"></a><tt class="py-lineno">1720</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-<a name="L1721"></a><tt class="py-lineno">1721</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1029" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1029', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
-<a name="L1722"></a><tt class="py-lineno">1722</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
-<a name="L1723"></a><tt class="py-lineno">1723</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
-<a name="L1724"></a><tt class="py-lineno">1724</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1725"></a><tt class="py-lineno">1725</tt> <tt class="py-line"> <tt class="py-name">bytes</tt><tt class="py-op">(</tt><tt class="py-name">memoryview</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1726"></a><tt class="py-lineno">1726</tt> <tt class="py-line"> </tt>
-<a name="L1727"></a><tt class="py-lineno">1727</tt> <tt class="py-line"> </tt>
-<a name="test_suite"></a><div id="test_suite-def"><a name="L1728"></a><tt class="py-lineno">1728</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="test_suite-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="test_suite-expanded"><a name="L1729"></a><tt class="py-lineno">1729</tt> <tt class="py-line"> <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1730"></a><tt class="py-lineno">1730</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1030" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTTestCase=lxml.tests.test_xslt.ETreeXSLTTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1030', 'ETreeXSLTTestCase', 'link-1030');">ETreeXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1731"></a><tt class="py-lineno">1731</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1031" class="py-name" targets="Class lxml.tests.test_xslt.ETreeEXSLTTestCase=lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeEXSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1031', 'ETreeEXSLTTestCase', 'link-1031');">ETreeEXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1732"></a><tt class="py-lineno">1732</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1032" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase=lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase" class="py-name" href="#" onclick="return doclink('link-1032', 'ETreeXSLTExtFuncTestCase', 'link-1032');">ETreeXSLTExtFuncTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1733"></a><tt class="py-lineno">1733</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1033" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTExtElementTestCase=lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase" class="py-name" href="#" onclick="return doclink('link-1033', 'ETreeXSLTExtElementTestCase', 'link-1033');">ETreeXSLTExtElementTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1734"></a><tt class="py-lineno">1734</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-1034" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-1034', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1735"></a><tt class="py-lineno">1735</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1035" class="py-name" targets="Class lxml.tests.test_xslt.Py3XSLTTestCase=lxml.tests.test_xslt.Py3XSLTTestCase-class.html"><a title="lxml.tests.test_xslt.Py3XSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1035', 'Py3XSLTTestCase', 'link-1035');">Py3XSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1736"></a><tt class="py-lineno">1736</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
-<a name="L1737"></a><tt class="py-lineno">1737</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-1036" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1036', 'make_doctest', 'link-21');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/extensions.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1738"></a><tt class="py-lineno">1738</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
-<a name="L1739"></a><tt class="py-lineno">1739</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-1037" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1037', 'make_doctest', 'link-21');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/xpathxslt.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1740"></a><tt class="py-lineno">1740</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
-</div><a name="L1741"></a><tt class="py-lineno">1741</tt> <tt class="py-line"> </tt>
-<a name="L1742"></a><tt class="py-lineno">1742</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1743"></a><tt class="py-lineno">1743</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
-<a name="L1744"></a><tt class="py-lineno">1744</tt> <tt class="py-line"> </tt><script type="text/javascript">
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1034', 'etree', 'link-15');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1035" class="py-name"><a title="lxml.etree.ErrorDomains.XSLT
+lxml.etree.XSLT" class="py-name" href="#" onclick="return doclink('link-1035', 'XSLT', 'link-27');">XSLT</a></tt><tt class="py-op">(</tt><tt id="link-1036" class="py-name"><a title="lxml.html.clean.Cleaner.style" class="py-name" href="#" onclick="return doclink('link-1036', 'style', 'link-24');">style</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">st</tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1037" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1037', '_bytes', 'link-19');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''\</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt> <tt class="py-line"><tt class="py-string"><?xml version="1.0"?></tt> </tt>
+<a name="L1744"></a><tt class="py-lineno">1744</tt> <tt class="py-line"><tt class="py-string"><foo>B</foo></tt> </tt>
+<a name="L1745"></a><tt class="py-lineno">1745</tt> <tt class="py-line"><tt class="py-string">'''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1746"></a><tt class="py-lineno">1746</tt> <tt class="py-line"> <tt class="py-name">bytes</tt><tt class="py-op">(</tt><tt class="py-name">memoryview</tt><tt class="py-op">(</tt><tt class="py-name">res</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1747"></a><tt class="py-lineno">1747</tt> <tt class="py-line"> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt> <tt class="py-line"> </tt>
+<a name="test_suite"></a><div id="test_suite-def"><a name="L1749"></a><tt class="py-lineno">1749</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_xslt-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="test_suite-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="test_suite-expanded"><a name="L1750"></a><tt class="py-lineno">1750</tt> <tt class="py-line"> <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1038" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTTestCase=lxml.tests.test_xslt.ETreeXSLTTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1038', 'ETreeXSLTTestCase', 'link-1038');">ETreeXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1039" class="py-name" targets="Class lxml.tests.test_xslt.ETreeEXSLTTestCase=lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeEXSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1039', 'ETreeEXSLTTestCase', 'link-1039');">ETreeEXSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1040" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase=lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase" class="py-name" href="#" onclick="return doclink('link-1040', 'ETreeXSLTExtFuncTestCase', 'link-1040');">ETreeXSLTExtFuncTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1041" class="py-name" targets="Class lxml.tests.test_xslt.ETreeXSLTExtElementTestCase=lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html"><a title="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase" class="py-name" href="#" onclick="return doclink('link-1041', 'ETreeXSLTExtElementTestCase', 'link-1041');">ETreeXSLTExtElementTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-1042" class="py-name"><a title="lxml.tests.test_xslt.is_python3" class="py-name" href="#" onclick="return doclink('link-1042', 'is_python3', 'link-9');">is_python3</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-1043" class="py-name" targets="Class lxml.tests.test_xslt.Py3XSLTTestCase=lxml.tests.test_xslt.Py3XSLTTestCase-class.html"><a title="lxml.tests.test_xslt.Py3XSLTTestCase" class="py-name" href="#" onclick="return doclink('link-1043', 'Py3XSLTTestCase', 'link-1043');">Py3XSLTTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
+<a name="L1758"></a><tt class="py-lineno">1758</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-1044" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1044', 'make_doctest', 'link-21');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/extensions.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1759"></a><tt class="py-lineno">1759</tt> <tt class="py-line"> <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt> </tt>
+<a name="L1760"></a><tt class="py-lineno">1760</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt id="link-1045" class="py-name"><a title="lxml.tests.common_imports.make_doctest" class="py-name" href="#" onclick="return doclink('link-1045', 'make_doctest', 'link-21');">make_doctest</a></tt><tt class="py-op">(</tt><tt class="py-string">'../../../doc/xpathxslt.txt'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
+</div><a name="L1762"></a><tt class="py-lineno">1762</tt> <tt class="py-line"> </tt>
+<a name="L1763"></a><tt class="py-lineno">1763</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt> <tt class="py-line"> <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
</tr>
</table>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="test_xslt_unicode_standalone"></a><span class="summary-sig-name">test_xslt_unicode_standalone</span>(<span class="summary-sig-arg">self</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="lxml.tests.test_xslt-pysrc.html#ETreeXSLTTestCase.test_xslt_unicode_standalone">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
</td>
</tr>
<tr>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:35 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:22 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:19 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a href="xml.etree.ElementTree-module.html#_serialize" class="summary-name" onclick="show_private();">_serialize</a> = <code title="{'html': <function _serialize_html at 0x3c04320>,
- 'text': <function _serialize_text at 0x3c04398>,
- 'xml': <function _serialize_xml at 0x3c042a8>}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_html at 0x3c04320><code class="variable-op">,</code><code class="variable-ellipsis">...</code></code>
+ <a href="xml.etree.ElementTree-module.html#_serialize" class="summary-name" onclick="show_private();">_serialize</a> = <code title="{'html': <function _serialize_html at 0x25e5398>,
+ 'text': <function _serialize_text at 0x25e5410>,
+ 'xml': <function _serialize_xml at 0x25e5320>}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_html at 0x25e5398><code class="variable-op">,</code><code class="variable-ellipsis">...</code></code>
</td>
</tr>
</table>
<dl class="fields">
<dt>Value:</dt>
<dd><table><tr><td><pre class="variable">
-<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_html at 0x3c04320><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">text</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_text at 0x3c04398><code class="variable-op">,</code>
- <code class="variable-quote">'</code><code class="variable-string">xml</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_xml at 0x3c042a8><code class="variable-group">}</code>
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">html</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_html at 0x25e5398><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">text</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_text at 0x25e5410><code class="variable-op">,</code>
+ <code class="variable-quote">'</code><code class="variable-string">xml</code><code class="variable-quote">'</code><code class="variable-op">: </code><function _serialize_xml at 0x25e5320><code class="variable-group">}</code>
</pre></td></tr></table>
</dd>
</dl>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:20 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:34 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:23 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:38 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Fri Mar 29 22:01:21 2013
+ Generated by Epydoc 3.0.1 on Fri Apr 12 07:18:36 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
</head>
<body>
<div class="document" id="how-to-build-lxml-from-source">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">How to build lxml from source</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu current" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">How to build lxml from source</h1>
<p>To build lxml from source, you need libxml2 and libxslt properly
installed, <em>including the header files</em>. These are likely shipped in
<pre class="literal-block">
pip install "Cython>=0.18"
</pre>
-<p>lxml currently requires Cython 0.17.3, later release versions should
-work as well.</p>
+<p>lxml currently requires at least Cython 0.18, later release versions
+should work as well.</p>
</div>
<div class="section" id="github-git-and-hg">
<h1>Github, git and hg</h1>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="the-public-c-api-of-lxml-etree">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">The public C-API of lxml.etree</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu current" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">The public C-API of lxml.etree</h1>
<p>As of version 1.1, lxml.etree provides a public C-API. This allows external
C extensions to efficiently access public functions and classes of lxml,
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
+++ /dev/null
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
-<title>lxml changelog</title>
-<link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
-<div class="document" id="lxml-changelog">
-<h1 class="title">lxml changelog</h1>
-
-<div class="section" id="id1">
-<h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="features-added">
-<h2>Features added</h2>
-</div>
-<div class="section" id="bugs-fixed">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1160386">LP#1160386</a>: Write access to <tt class="docutils literal">lxml.html.FormElement.fields</tt> raised
-an AttributeError in Py3.</li>
-<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
-</ul>
-</div>
-<div class="section" id="other-changes">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
-from the module dict.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id2">
-<h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id3">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/89">GH#89</a>: lxml.html.clean allows overriding the set of attributes that it
-considers 'safe'. Patch by Francis Devereux.</li>
-</ul>
-</div>
-<div class="section" id="id4">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1104370">LP#1104370</a>: <tt class="docutils literal">copy.copy(el.attrib)</tt> raised an exception. It now returns
-a copy of the attributes as a plain Python dict.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
-always used the first namespace mapping that was provided for each
-path expression instead of using the one that was actually passed
-in for the current run.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
-without threading support. Patch by Ulrich Seidl.</li>
-</ul>
-</div>
-<div class="section" id="id5">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta1-2012-12-21">
-<h1>3.1beta1 (2012-12-21)</h1>
-<div class="section" id="id6">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New build-time option <tt class="docutils literal"><span class="pre">--with-unicode-strings</span></tt> for Python 2 that
-makes the API always return Unicode strings for names and text
-instead of byte strings for plain ASCII content.</li>
-<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
-<li>E factory in lxml.objectify is callable to simplify the creation of
-tags with non-identifier names without having to resort to getattr().</li>
-</ul>
-</div>
-<div class="section" id="id7">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When starting from a non-namespaced element in lxml.objectify, searching
-for a child without explicitly specifying a namespace incorrectly found
-namespaced elements with the requested local name, instead of restricting
-the search to non-namespaced children.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
-</ul>
-</div>
-<div class="section" id="id8">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
-removed from the module API of lxml.objectify.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
-many children. Patch by Anders Hammarquist.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id9">
-<h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id10">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id11">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix crash during interpreter shutdown by switching to Cython 0.17.3 for building.</li>
-</ul>
-</div>
-<div class="section" id="id12">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id13">
-<h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id14">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id15">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065924">LP#1065924</a>: Element proxies could disappear during garbage collection
-in PyPy without proper cleanup.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
-</ul>
-</div>
-<div class="section" id="id16">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id17">
-<h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id18">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id19">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>End-of-file handling was incorrect in iterparse() when reading from
-a low-level C file stream and failed in libxml2 2.9.0 due to its
-improved consistency checks.</li>
-</ul>
-</div>
-<div class="section" id="id20">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The build no longer uses Cython by default unless the generated C files
-are missing. To use Cython, pass the option "--with-cython". To ignore
-the fatal build error when Cython is required but not available (e.g. to
-run special setup.py commands that do not actually run a build), pass
-"--without-cython".</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2012-09-26">
-<h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id21">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Python level access to (optional) libxml2 memory debugging features
-to simplify debugging of memory leaks etc.</li>
-</ul>
-</div>
-<div class="section" id="id22">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fix a memory leak in XPath by switching to Cython 0.17.1.</li>
-<li>Some tests were adapted to work with PyPy.</li>
-</ul>
-</div>
-<div class="section" id="id23">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha2-2012-08-23">
-<h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id24">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">.iter()</tt> method of elements now accepts <tt class="docutils literal">tag</tt> arguments like
-<tt class="docutils literal"><span class="pre">"{*}name"</span></tt> to search for elements with a given local name in any
-namespace. With this addition, all combinations of wildcards now work
-as expected:
-<tt class="docutils literal">"{ns}name"</tt>, <tt class="docutils literal"><span class="pre">"{}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{*}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{ns}*"</span></tt>, <tt class="docutils literal"><span class="pre">"{}*"</span></tt>
-and <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>. Note that <tt class="docutils literal">"name"</tt> is equivalent to <tt class="docutils literal"><span class="pre">"{}name"</span></tt>,
-but <tt class="docutils literal">"*"</tt> is <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>.
-The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
-<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
-and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
-<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
-<tt class="docutils literal">iterparse()</tt> class. Patch by Simon Sapin.</li>
-<li>C14N allows specifying the inclusive prefixes to be promoted
-to top-level during exclusive serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id25">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
-failed to read the entire string.</li>
-</ul>
-</div>
-<div class="section" id="id26">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha1-2012-07-31">
-<h1>3.0alpha1 (2012-07-31)</h1>
-<div class="section" id="id27">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Initial support for building in PyPy (through cpyext).</li>
-<li>DTD objects gained an API that allows read access to their
-declarations.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
-from grep output) and for surrounding the output with a new root
-tag.</li>
-<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
-types (such as string subtypes) when building elements around them.</li>
-<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
-argument supports passing a set of tags. Tree nodes will be
-returned by the iterators if they match any of the tags.</li>
-</ul>
-</div>
-<div class="section" id="id28">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods in <tt class="docutils literal">lxml.objectify</tt> no longer use XPath
-internally, which makes them faster in many cases (especially when
-short circuiting after a single or couple of elements) and fixes
-some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>. Note that
-this means that they no longer support arbitrary XPath expressions
-but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
-The previous implementation was also redundant with the normal
-XPath support, which can be used as a replacement.</li>
-<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
-instruction that happened to be in the wrong spot. (Same for the
-other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
-<li>The error logging is less intrusive and avoids a global setup where
-possible.</li>
-<li>Fixed undefined names in html5lib parser.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
-<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
-another Element as parameter.</li>
-<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
-properties immutable (as in objectify, for example), inserting text
-when creating Elements through the E-Factory feature of the class
-constructor would fail with an exception, stating that the text
-cannot be modified.</li>
-</ul>
-</div>
-<div class="section" id="id29">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code base was overhauled to properly use 'const' where the API
-of libxml2 and libxslt requests it. This also has an impact on the
-public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
-well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
-Code that uses these declarations may have to be adapted. On the
-plus side, this fixes several C compiler warnings, also for user
-code, thus making it easier to spot real problems again.</li>
-<li>The functionality of "lxml.cssselect" was moved into a separate PyPI
-package called "cssselect". To continue using it, you must install
-that package separately. The "lxml.cssselect" module is still
-available and provides the same interface, provided the "cssselect"
-package can be imported at runtime.</li>
-<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
-arguments are now sorted by (namespaced) name before being created
-to make their order predictable for serialisation and iteration.
-Note that adding or deleting attributes afterwards does not take
-that order into account, i.e. setting a new attribute appends it
-after the existing ones.</li>
-<li>Several classes that are for internal use only were removed
-from the <tt class="docutils literal">lxml.etree</tt> module dict:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
-_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
-__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
-_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
-_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
-_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
-_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
-_ParserSchemaValidationContext, _XPathContext,
-_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
-<li>Several internal classes can no longer be inherited from:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
-_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
-_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
-_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
-_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id30">
-<h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id31">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id32">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
-failed to read the entire string.</li>
-</ul>
-</div>
-<div class="section" id="id33">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id34">
-<h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id35">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id36">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when merging text nodes in <tt class="docutils literal">element.remove()</tt>.</li>
-<li>Crash in sax/target parser when reporting empty doctype.</li>
-</ul>
-</div>
-<div class="section" id="id37">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id38">
-<h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id39">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id40">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when building an nsmap (Element property) with empty
-namespace URIs.</li>
-<li>Crash due to race condition when errors (or user messages) occur
-during threaded XSLT processing.</li>
-<li>XSLT stylesheet compilation could ignore compilation errors.</li>
-</ul>
-</div>
-<div class="section" id="id41">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id42">
-<h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id43">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.tostring()</tt> gained new serialisation options
-<tt class="docutils literal">with_tail</tt> and <tt class="docutils literal">doctype</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id44">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
-requesting start events.</li>
-<li>Fixed parsing of more selectors in cssselect. Whitespace before
-pseudo-elements and pseudo-classes is significant as it is a
-descendant combinator.
-"E :pseudo" should parse the same as "E *:pseudo", not "E:pseudo".
-Patch by Simon Sapin.</li>
-<li>lxml.html.diff no longer raises an exception when hitting
-'img' tags without 'src' attribute.</li>
-</ul>
-</div>
-<div class="section" id="id45">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id46">
-<h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id47">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
-<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
-declarations (and generally clean up the namespace declarations)
-after removing the type annotations.</li>
-<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
-copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
-of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
-</ul>
-</div>
-<div class="section" id="id48">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed the "descendant" bug in cssselect a second time (after a first
-fix in lxml 2.3.1). The previous change resulted in a serious
-performance regression for the XPath based evaluation of the
-translated expression. Note that this breaks the usage of some of
-the generated XPath expressions as XSLT location paths that
-previously worked in 2.3.1.</li>
-<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
-">", "+" and "~" is now correctly ignored. Previously is was parsed as
-a descendant combinator. For example, "div> .foo" was parsed the same as
-"div>* .foo" instead of "div>.foo". Patch by Simon Sapin.</li>
-</ul>
-</div>
-<div class="section" id="id49">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id50">
-<h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id51">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New option <tt class="docutils literal">kill_tags</tt> in <tt class="docutils literal">lxml.html.clean</tt> to remove specific
-tags and their content (i.e. their whole subtree).</li>
-<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
-pseudo-attributes from the text content of processing instructions.</li>
-<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
-used to compile external C code against lxml.etree. This is
-specifically required for statically linked lxml builds when code
-needs to compile against the exact same header file versions as lxml
-itself.</li>
-<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
-<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
-closed after reading or not. By default, the file will be closed,
-as the user is not expected to keep a reference to it.</li>
-</ul>
-</div>
-<div class="section" id="id52">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning didn't remove 'data:' links.</li>
-<li>The html5lib parser integration now uses the 'official'
-implementation in html5lib itself, which makes it work with newer
-releases of the library.</li>
-<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
-tag name when the corresponding start event inferred the same plain
-tag name to be in the default namespace.</li>
-<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
-<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use. This
-reverts a change in lxml 2.3 where all files would be closed. It is
-the users responsibility to properly close the file(-like) object,
-also in error cases.</li>
-<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
-<li>In lxml.cssselect, use the xpath 'A//B' (short for
-'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
-the css descendant selector ('A B'). This makes a few edge cases
-like <tt class="docutils literal">"div <span class="pre">*:last-child"</span></tt> consistent with the selector behavior in
-WebKit and Firefox, and makes more css expressions valid location
-paths (for use in xsl:template match).</li>
-<li>In lxml.html, non-selected <tt class="docutils literal"><option></tt> tags no longer show up in the
-collected form values.</li>
-<li>Adding/removing <tt class="docutils literal"><option></tt> values to/from a multiple select form
-field properly selects them and unselects them.</li>
-</ul>
-</div>
-<div class="section" id="id53">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Static builds can specify the download directory with the
-<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id54">
-<h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id55">
-<h2>Features added</h2>
-<ul class="simple">
-<li>When looking for children, <tt class="docutils literal">lxml.objectify</tt> takes '{}tag' as
-meaning an empty namespace, as opposed to the parent namespace.</li>
-</ul>
-</div>
-<div class="section" id="id56">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When finished reading from a file-like object, the parser
-immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
-<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
-file.</li>
-<li>Work-around for libxml2 bug that can leave the HTML parser in a
-non-functional state after parsing a severly broken document (fixed
-in libxml2 2.7.8).</li>
-<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id57">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some public functions in the Cython-level C-API have more explicit
-return types.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2010-09-06">
-<h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id58">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id59">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
-<tt class="docutils literal">base_url</tt> parameters.</li>
-<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
-<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
-use of os.tempnam. It now takes an optional 'encoding' parameter.</li>
-</ul>
-</div>
-<div class="section" id="id60">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha2-2010-07-24">
-<h1>2.3alpha2 (2010-07-24)</h1>
-<div class="section" id="id61">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id62">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XSLT when generating text-only result documents with a
-stylesheet created in a different thread.</li>
-</ul>
-</div>
-<div class="section" id="id63">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
-(following ElementTree 1.3).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha1-2010-06-19">
-<h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id64">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Keyword argument <tt class="docutils literal">namespaces</tt> in <tt class="docutils literal">lxml.cssselect.CSSSelector()</tt>
-to pass a prefix-to-namespace mapping for the selector.</li>
-<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
-globally registers a namespace prefix for a namespace that newly
-created Elements in that namespace will use automatically. Follows
-ElementTree 1.3.</li>
-<li>Support 'unicode' string name as encoding parameter in
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
-match the upcoming ElementTree 1.3 that will ship in the standard
-library of Python 3.2/2.7. This includes extended support for
-predicates as well as namespace prefixes (as known from XPath).</li>
-<li>During regular XPath evaluation, various ESXLT functions are
-available within their namespace when using libxslt 1.1.26 or later.</li>
-<li>Support passing a readily configured logger instance into
-<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
-<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
-override the DOCTYPE (internal subset) of the document.</li>
-<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
-to append the resulting content directly to an output element.</li>
-<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
-XSLT extension element itself.</li>
-<li>ISO-Schematron support based on the de-facto Schematron reference
-'skeleton implementation'.</li>
-<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
-parameters.</li>
-<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
-overhead.</li>
-<li>Setting the value of a namespaced attribute always uses a prefixed
-namespace instead of the default namespace even if both declare the
-same namespace URI. This avoids serialisation problems when an
-attribute from a default namespace is set on an element from a
-different namespace.</li>
-<li>XSLT extension elements: support for XSLT context nodes other than
-elements: document root, comments, processing instructions.</li>
-<li>Support for strings (in addition to Elements) in node-sets returned
-by extension functions.</li>
-<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
-the document on submit.</li>
-<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
-<li>Namespace URIs get validated against RFC 3986 at the API level
-(required by the XML namespace specification).</li>
-<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
-(compatible with ElementTree).</li>
-</ul>
-</div>
-<div class="section" id="id65">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>API is hardened against invalid proxy instances to prevent crashes
-due to incorrectly instantiated Element instances.</li>
-<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
-<li>Export ElementTree compatible XML parser class as
-<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
-<li>ObjectifiedDataElements in lxml.objectify were not hashable. They
-now use the hash value of the underlying Python value (string,
-number, etc.) to which they compare equal.</li>
-<li>Parsing broken fragments in lxml.html could fail if the fragment
-contained an orphaned closing '</div>' tag.</li>
-<li>Using XSLT extension elements around the root of the output document
-crashed.</li>
-<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr="val"]</span></tt> and
-<tt class="docutils literal">x <span class="pre">[attr="val"]</span></tt> (with a space). The latter now matches the
-attribute independent of the element.</li>
-<li>Rewriting multiple links inside of HTML text content could end up
-replacing unrelated content as replacements could impact the
-reported position of subsequent matches. Modifications are now
-simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
-return links in reversed order if they appear inside the same text
-node. Thus, replacements and link-internal modifications no longer
-change the position of links reported afterwards.</li>
-<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
-not represent the complete raw value (including child tags etc.). It
-now serialises the complete content on read and replaces the
-complete content by a string on write.</li>
-<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
-parsing failed. Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
-called after parsing, regardless of the outcome.</li>
-</ul>
-</div>
-<div class="section" id="id66">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.1.2 and later.</li>
-<li>Static MS Windows builds can now download their dependencies
-themselves.</li>
-<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
-Element object. It therefore no longer requires the garbage
-collector to clean up.</li>
-<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id67">
-<h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id68">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li>Import fix for urljoin in Python 3.1+.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id69">
-<h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id70">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XSLT when generating text-only result documents with a
-stylesheet created in a different thread.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id71">
-<h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id72">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed several Python 3 regressions by building with Cython 0.11.3.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id73">
-<h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id74">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for running XSLT extension elements on the input root node
-(e.g. in a template matching on "/").</li>
-</ul>
-</div>
-<div class="section" id="id75">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XPath evaluation when reading smart strings from a document
-other than the original context document.</li>
-<li>Support recent versions of html5lib by not requiring its
-<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
-<li>Manually instantiating the custom element classes in
-<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
-<li>Invalid XML text characters were not rejected by the API when they
-appeared in unicode strings directly after non-ASCII characters.</li>
-<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
-<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
-<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
-<li>Crash in XSLT extension elements when the XSLT context node is not
-an element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id76">
-<h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id77">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Static build of libxml2/libxslt was broken.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id78">
-<h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id79">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id80">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
-parser.</li>
-<li>Looking up and deleting attributes without a namespace could hit a
-namespaced attribute of the same name instead.</li>
-<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
-ones) could leave a partially initialised element in the tree.</li>
-<li>Modifying trees that contain parsed entity references could result
-in an infinite loop.</li>
-<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
-attribute value was rejected as a non-unicode/non-ascii string</li>
-<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
-messages.</li>
-<li>Invalid syntax in CSS expressions could lead to an infinite loop in
-the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS special character escapes were not properly handled in
-<tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
-attribute were not handled correctly. The HTML standard dictates
-that their value is defined by their text content. This is now
-supported by lxml.html.</li>
-<li>XPath raised a TypeError when finding CDATA sections. This is now
-fully supported.</li>
-<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
-namespaces when annotation is disabled.</li>
-<li>Feed parser failed to honout the 'recover' option on parse errors.</li>
-<li>Diverting the error logging to Python's logging system was broken.</li>
-</ul>
-</div>
-<div class="section" id="id81">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id82">
-<h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id83">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New helper functions <tt class="docutils literal">strip_attributes()</tt>, <tt class="docutils literal">strip_elements()</tt>,
-<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
-from a subtree.</li>
-</ul>
-</div>
-<div class="section" id="id84">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Namespace cleanup on subtree insertions could result in missing
-namespace declarations (and potentially crashes) if the element
-defining a namespace was deleted and the namespace was not used by
-the top element of the inserted subtree but only in deeper subtrees.</li>
-<li>Raising an exception from a parser target callback didn't always
-terminate the parser.</li>
-<li>Only {true, false, 1, 0} are accepted as the lexical representation for
-BoolElement ({True, False, T, F, t, f} not any more), restoring lxml <= 2.0
-behaviour.</li>
-</ul>
-</div>
-<div class="section" id="id85">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id86">
-<h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id87">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Injecting default attributes into a document during XML Schema
-validation (also at parse time).</li>
-<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
-restrictions imposed by libxml2 2.7.</li>
-</ul>
-</div>
-<div class="section" id="id88">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The script for statically building libxml2 and libxslt didn't work
-in Py3.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
-for parsing (which could lead to a crash before release 2.6.24).</li>
-</ul>
-</div>
-<div class="section" id="id89">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id90">
-<h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id91">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
-<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
-on serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id92">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing an XML Schema with external imports from a
-filename.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2009-02-27">
-<h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id93">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support strings and instantiable Element classes as child arguments
-to the constructor of custom Element classes.</li>
-<li>GZip compression support for serialisation to files and file-like
-objects.</li>
-</ul>
-</div>
-<div class="section" id="id94">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Deep-copying an ElementTree copied neither its sibling PIs and
-comments nor its internal/external DTD subsets.</li>
-<li>Soupparser failed on broken attributes without values.</li>
-<li>Crash in XSLT when overwriting an already defined attribute using
-<tt class="docutils literal">xsl:attribute</tt>.</li>
-<li>Crash bug in exception handling code under Python 3. This was due
-to a problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
-<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
-was evaluated incorrectly.</li>
-</ul>
-</div>
-<div class="section" id="id95">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.0.1.</li>
-<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
-for Elements without text content.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2009-02-17">
-<h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id96">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">XSLT.strparam()</tt> class method to wrap quoted string parameters
-that require escaping.</li>
-</ul>
-</div>
-<div class="section" id="id97">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in XPath evaluators.</li>
-<li>Crash when parsing indented XML in one thread and merging it with
-other documents parsed in another thread.</li>
-<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
-string failed.</li>
-<li>Fixes following changes in Python 3.0.1.</li>
-<li>Minor fixes for Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id98">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The global error log (which is copied into the exception log) is now
-local to a thread, which fixes some race conditions.</li>
-<li>More robust error handling on serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2009-01-25">
-<h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id99">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling. This was due to a
-problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
-<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url("link")</span></tt> incorrectly
-(treating the quotation marks as part of the link).</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id100">
-<h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id101">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling. This was due to a
-problem in Cython, not lxml itself.</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2008-12-12">
-<h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id102">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Allow <tt class="docutils literal">lxml.html.diff.htmldiff</tt> to accept Element objects, not
-just HTML strings.</li>
-</ul>
-</div>
-<div class="section" id="id103">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-<li>Fixed missing whitespace before <tt class="docutils literal"><span class="pre">Link:...</span></tt> in <tt class="docutils literal">lxml.html.diff</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id104">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Export <tt class="docutils literal">lxml.html.parse</tt>.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id105">
-<h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id106">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id107">
-<h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id108">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when using an XPath evaluator in multiple threads.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha1-2008-11-23">
-<h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id109">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for XSLT result tree fragments in XPath/XSLT extension
-functions.</li>
-<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
-<li>New options for exclusive C14N and C14N without comments.</li>
-<li>Instantiating a custom Element classes creates a new Element.</li>
-</ul>
-</div>
-<div class="section" id="id110">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>XSLT didn't inherit the parse options of the input document.</li>
-<li>0-bytes could slip through the API when used inside of Unicode
-strings.</li>
-<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
-that end in a parenthesis, will be linked in their entirety (typical
-with Wikipedia links).</li>
-</ul>
-</div>
-<div class="section" id="id111">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id112">
-<h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id113">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id114">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-<li>Parser Unicode decoding errors could get swallowed by other
-exceptions.</li>
-<li>Name/import errors in some Python modules.</li>
-<li>Internal DTD subsets that did not specify a system or public ID were
-not serialised and did not appear in the docinfo property of
-ElementTrees.</li>
-<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
-<li>Test suite fixes for libxml2 2.7.</li>
-<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
-<li>Resolver.resolve_file() was broken.</li>
-<li>Overriding the parser encoding didn't work for many encodings.</li>
-</ul>
-</div>
-<div class="section" id="id115">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id116">
-<h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id117">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id118">
-<h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id119">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.etree now tries to find the absolute path name of files when
-parsing from a file-like object. This helps custom resolvers when
-resolving relative URLs, as lixbml2 can prepend them with the path
-of the source document.</li>
-</ul>
-</div>
-<div class="section" id="id120">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-<div class="section" id="id121">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id122">
-<h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id123">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id124">
-<h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id125">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id126">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>Encoding problem when including text with ElementInclude under
-Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id127">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id128">
-<h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id129">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
-with whitespace in URL attributes.</li>
-</ul>
-</div>
-<div class="section" id="id130">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id131">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id132">
-<h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id133">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
-keyword option).</li>
-<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
-with whitespace in URL attributes.</li>
-</ul>
-</div>
-<div class="section" id="id134">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Custom resolvers were not used for XMLSchema includes/imports and
-XInclude processing.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id135">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
-<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
-<li>Speed-up when running XSLTs on documents from other threads</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id136">
-<h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id137">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
-</ul>
-</div>
-<div class="section" id="id138">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Descending dot-separated classes in CSS selectors were not resolved
-correctly.</li>
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Potential threading problem in XInclude.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-</ul>
-</div>
-<div class="section" id="id139">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2008-06-19">
-<h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id140">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
-<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
-<li>Support for parsing from file-like objects that return unicode
-strings.</li>
-<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
-namespace declarations from a (sub)tree (experimental).</li>
-<li>XSLT results support the buffer protocol in Python 3.</li>
-<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
-a parsable string will return either a UTF-8 encoded byte string, a
-unicode string or a tree, based on the type of the input.
-Previously, the result was always a byte string or a tree.</li>
-<li>Support for Python 2.6 and 3.0 beta.</li>
-<li>File name handling now uses a heuristic to convert between byte
-strings (usually filenames) and unicode strings (usually URLs).</li>
-<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
-<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
-on reading under Python 2.x.</li>
-<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
-lxml.html (experimental).</li>
-<li>Most features in lxml.html work for XHTML namespaced tag names
-(experimental).</li>
-</ul>
-</div>
-<div class="section" id="id141">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-<li>A number of problems related to unicode/byte string conversion of
-filenames and error messages were fixed.</li>
-<li>Building on MacOS-X now passes the "flat_namespace" option to the C
-compiler, which reportedly prevents build quirks and crashes on this
-platform.</li>
-<li>Windows build was broken.</li>
-<li>Rare crash when serialising to a file object with certain encodings.</li>
-</ul>
-</div>
-<div class="section" id="id142">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
-namespaces, etc. will result in a ValueError instead of an
-AssertionError (just like the tag well-formedness check).</li>
-<li>Up to several times faster attribute access (i.e. tree traversal) in
-lxml.objectify.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id143">
-<h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id144">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id145">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find("tag[child]")</span></tt>.</li>
-<li>Windows build was broken.</li>
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-document is deleted while the subtree is still in use.</li>
-<li>Rare crash when serialising to a file object with certain encodings.</li>
-</ul>
-</div>
-<div class="section" id="id146">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml should now build without problems on MacOS-X.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2008-05-02">
-<h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id147">
-<h2>Features added</h2>
-<ul class="simple">
-<li>All parse functions in lxml.html take a <tt class="docutils literal">parser</tt> keyword argument.</li>
-<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
-attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
-pre-configured for the lxml.html package.</li>
-</ul>
-</div>
-<div class="section" id="id148">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-document is deleted while the subtree is still in use.</li>
-<li>Passing an nsmap when creating an Element will no longer strip
-redundantly defined namespace URIs. This prevented the definition
-of more than one prefix for a namespace on the same Element.</li>
-</ul>
-</div>
-<div class="section" id="id149">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>If the default namespace is redundantly defined with a prefix on the
-same Element, the prefix will now be preferred for subelements and
-attributes. This allows users to work around a problem in libxml2
-where attributes from the default namespace could serialise without
-a prefix even when they appear on an Element with a different
-namespace (i.e. they would end up in the wrong namespace).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id150">
-<h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id151">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id152">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state "STOPPED", which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
-</ul>
-</div>
-<div class="section" id="id153">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="beta1-2008-04-15">
-<h1>2.1beta1 (2008-04-15)</h1>
-<div class="section" id="id154">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
-<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
-sections. Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
-sections by their text content.</li>
-<li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
-</ul>
-</div>
-<div class="section" id="id155">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state "STOPPED", which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
-<li>lxml.etree accepted non well-formed namespace prefix names.</li>
-</ul>
-</div>
-<div class="section" id="id156">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
-takes care of namespace cleanup when moving elements between
-different namespace contexts.</li>
-<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
-parser or through lxml.html now end up in a new HTML document
-(doctype HTML 4.01 Transitional) instead of a generic XML document.
-This mostly impacts the serialisation and the availability of a DTD
-context.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id157">
-<h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id158">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id159">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Hanging thread in conjunction with GTK threading.</li>
-<li>Crash bug in iterparse when moving elements into other documents.</li>
-<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</li>
-<li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
-</ul>
-</div>
-<div class="section" id="id160">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="alpha1-2008-03-27">
-<h1>2.1alpha1 (2008-03-27)</h1>
-<div class="section" id="id161">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
-<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
-returns a dict of access configuration options.</li>
-<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
-<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
-<li>Extension elements for XSLT (experimental!)</li>
-<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
-an Element.</li>
-<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
-</ul>
-</div>
-<div class="section" id="id162">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Default encoding for plain text serialisation was different from
-that of XML serialisation (UTF-8 instead of ASCII).</li>
-</ul>
-</div>
-<div class="section" id="id163">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Minor API speed-ups.</li>
-<li>The benchmark suite now uses tail text in the trees, which makes the
-absolute numbers incomparable to previous results.</li>
-<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
-used to enable syntax highlighting for the doctest examples.</li>
-</ul>
-<p>Most long-time deprecated functions and methods were removed:</p>
-<ul>
-<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
-<tt class="docutils literal">etree.use_global_python_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
-<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
-<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
-<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
-yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
-instead.</p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
-<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
-<tt class="docutils literal">objectify.set_default_parser()</tt></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id164">
-<h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id165">
-<h2>Features added</h2>
-<ul class="simple">
-<li>soupparser.parse() allows passing keyword arguments on to
-BeautifulSoup.</li>
-<li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id166">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
-<tt class="docutils literal"><br></tt>).</li>
-<li>Handle entity replacements correctly in target parser.</li>
-<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
-<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
-which made them turn up in text content.</li>
-<li>Attribute assignment of custom PyTypes in objectify could fail to
-correctly serialise the value to a string.</li>
-</ul>
-</div>
-<div class="section" id="id167">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
-<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API. The old module
-remains for compatibility with ElementTree's own ElementSoup module.</li>
-<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
-build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
-<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
-compiler options. The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
-option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id168">
-<h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id169">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support passing <tt class="docutils literal">base_url</tt> to file parser functions to override
-the filename of the file(-like) object.</li>
-</ul>
-</div>
-<div class="section" id="id170">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The prefix for objectify's pytype namespace was missing from the set
-of default prefixes.</li>
-<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
-<li>Error type names in RelaxNG were reported incorrectly.</li>
-<li>Slice deletion bug fixed in objectify.</li>
-</ul>
-</div>
-<div class="section" id="id171">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
-<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
-(<tt class="docutils literal"><span class="pre">method="xml"</span></tt> for XHTML output).</li>
-<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
-<tt class="docutils literal">base_url</tt> argument.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id172">
-<h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id173">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
-<li>Loads of new docstrings reflect the signature of functions and
-methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
-</ul>
-</div>
-<div class="section" id="id174">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
-<tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
-was an unnamed input field. Now unnamed input fields are completely
-ignored.</li>
-<li>Setting an element slice in objectify could insert slice-overlapping
-elements at the wrong position.</li>
-</ul>
-</div>
-<div class="section" id="id175">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The generated API documentation was cleaned up and disburdened from
-non-public classes etc.</li>
-<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
-<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml. If
-you want to use it, feel free to copy it over to your own source
-base.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
-compiler options.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id176">
-<h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id177">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Passing the <tt class="docutils literal">unicode</tt> type as <tt class="docutils literal">encoding</tt> to <tt class="docutils literal">tostring()</tt> will
-serialise to unicode. The <tt class="docutils literal">tounicode()</tt> function is now
-deprecated.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
-<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
-parser with the usual objectify setup.</li>
-<li>Plain ASCII XPath string results are no longer forced into unicode
-objects as in 2.0beta1, but are returned as plain strings as before.</li>
-<li>All XPath string results are 'smart' objects that have a
-<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
-<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
-<li>More accurate exception messages in validator creation.</li>
-<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
-<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
-selection make their Element container accessible through a
-<tt class="docutils literal">getparent()</tt> method. As a side-effect, they are now always
-unicode objects (even ASCII strings).</li>
-<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
-copy if they were not created in that thread.</li>
-<li>Invalid entity names and character references will be rejected by
-the <tt class="docutils literal">Entity()</tt> factory.</li>
-<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
-e.g. <tt class="docutils literal">&amp;</tt>.</li>
-<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
-in ET 1.3)</li>
-<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
-<li>ElementTree compatible TreeBuilder class.</li>
-<li>Use default prefixes for some common XML namespaces.</li>
-<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
-two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
-more general <tt class="docutils literal">allow_element(el)</tt>.</li>
-<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
-etree and in objectify</li>
-<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
-resolving a document as string data.</li>
-<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
-<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
-the special checking for one test.</li>
-<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
-The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
-<tt class="docutils literal">error_log</tt>.</li>
-<li>The normal parsers and the feed parser interface are now separated
-and can be used concurrently on the same parser instance.</li>
-<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
-ElementTree 1.3</li>
-<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
-parsing with the HTML parser (note that this interface may be
-subject to change)</li>
-<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
-of the parsed documents.</li>
-<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
-<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
-types in one step. Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
-<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
-argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
-serialise as XML, HTML or plain text content.</li>
-<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
-<tt class="docutils literal">findall()</tt></li>
-<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
-<li>Setting a QName object as value of the .text property or as an attribute
-will resolve its prefix in the respective context</li>
-<li>ElementTree-like parser target interface as described in
-<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
-<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
-(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
-<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
-integration with objectify. Provides extended type support based on
-registered PyTypes.</li>
-<li>XSLT objects now support deep copying</li>
-<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
-subelement straight with text, tail and attributes.</li>
-<li>XPath extension functions can now access the current context node
-(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
-(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
-parameter</li>
-<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
-<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
-doctests based on XML/HTML output. Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
-<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
-<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
-selectors.</li>
-<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
-treatment.</li>
-<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
-instance and no longer global.</li>
-<li>Schematron validation (incomplete in libxml2)</li>
-<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
-conversion function to strings to support setting text values from arbitrary
-types.</li>
-<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes. XML
-parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
-False to keep entities in the document.</li>
-<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
-<li>Error specific messages in XPath parsing and evaluation
-NOTE: for evaluation errors, you will now get an XPathEvalError instead of
-an XPathSyntaxError. To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
-<li>The regular expression functions in XPath now support passing a node-set
-instead of a string</li>
-<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
-<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
-</ul>
-</div>
-<div class="section" id="id178">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
-<li>Some Python 2.4-isms prevented lxml from building/running under
-Python 2.3.</li>
-<li>XPath on ElementTrees could crash when selecting the virtual root
-node of the ElementTree.</li>
-<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
-<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
-<li>Minor bugs in XSLT error message formatting.</li>
-<li>Result document memory leak in target parser.</li>
-<li>Target parser failed to report comments.</li>
-<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal"><object></tt>
-tags weren't recognized. (Note: plugin-specific link parameters
-still aren't recognized.) Also, the <tt class="docutils literal"><embed></tt> tag, though not
-standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
-<li>Using custom resolvers on XSLT stylesheets parsed from a string
-could request ill-formed URLs.</li>
-<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal"><tag <span class="pre">xmlns="..."></span></tt> in your
-output, it will then be namespace-neutral (before the ellipsis was
-treated as a real namespace).</li>
-<li>AttributeError in feed parser on parse errors</li>
-<li>XML feed parser setup problem</li>
-<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
-<li>lxml failed to serialise namespace declarations of elements other than the
-root node of a tree</li>
-<li>Race condition in XSLT where the resolver context leaked between concurrent
-XSLT calls</li>
-<li>lxml.etree did not check tag/attribute names</li>
-<li>The XML parser did not report undefined entities as error</li>
-<li>The text in exceptions raised by XML parsers, validators and XPath
-evaluators now reports the first error that occurred instead of the last</li>
-<li>Passing '' as XPath namespace prefix did not raise an error</li>
-<li>Thread safety in XPath evaluators</li>
-</ul>
-</div>
-<div class="section" id="id179">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Exceptions carry only the part of the error log that is related to
-the operation that caused the error.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
-file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
-<li>The test suite now skips most doctests under Python 2.3.</li>
-<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
-realclean</tt> instead)</li>
-<li>Minor performance tweaks for Element instantiation and subelement
-creation</li>
-<li>Various places in the XPath, XSLT and iteration APIs now require
-keyword-only arguments.</li>
-<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
-match the order used in all other iteration methods. The second
-argument ('preceding') is now a keyword-only argument.</li>
-<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
-reverted to return an iterator as it did in lxml 1.x. The ET API
-specification allows it to return either a sequence or an iterator,
-and it traditionally returned a sequence in ET and an iterator in
-lxml. However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
-method, which should be used in new code wherever possible.</li>
-<li>The 'pretty printed' serialisation of ElementTree objects now
-inserts newlines at the root level between processing instructions,
-comments and the root tag.</li>
-<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
-<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
-required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
-<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
-<li>The module source files were renamed to "lxml.*.pyx", such as
-"lxml.etree.pyx". This was changed for consistency with the way
-Pyrex commonly handles package imports. The main effect is that
-classes now know about their fully qualified class name, including
-the package name of their module.</li>
-<li>Keyword-only arguments in some API functions, especially in the
-parsers and serialisers.</li>
-<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
-between HTML tags and XML tags based on the parser that was used to
-parse or create them. HTML tags no longer reject any non-ASCII
-characters in tag names but only spaces and the special characters
-<tt class="docutils literal"><span class="pre"><>&/"'</span></tt>.</li>
-<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
-(which can crash on certain XPath errors)</li>
-<li>Type annotation in objectify now preserves the already annotated type by
-default to prevent loosing type information that is already there.</li>
-<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
-an iterator (ElementTree 1.3 compatible behaviour)</li>
-<li>objectify.PyType for None is now called "NoneType"</li>
-<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
-original name is still available as alias</li>
-<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
-generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
-<li>Major refactoring in XPath/XSLT extension function code</li>
-<li>Network access in parsers disabled by default</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id180">
-<h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id181">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Backported decref crash fix from 2.0</li>
-<li>Well hidden free-while-in-use crash bug in ObjectPath</li>
-</ul>
-</div>
-<div class="section" id="id182">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The test suites now run <tt class="docutils literal">gc.collect()</tt> in the <tt class="docutils literal">tearDown()</tt>
-methods. While this makes them take a lot longer to run, it also
-makes it easier to link a specific test to garbage collection
-problems that would otherwise appear in later tests.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id183">
-<h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id184">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id185">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.etree could crash when adding more than 10000 namespaces to a
-document</li>
-<li>lxml failed to serialise namespace declarations of elements other
-than the root node of a tree</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id186">
-<h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id187">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">ElementMaker</tt> in <tt class="docutils literal">lxml.builder</tt> now accepts the keyword arguments
-<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
-creates.</li>
-<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
-and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
-subset of the document respectively.</li>
-<li>Serialising an ElementTree now includes any internal DTD subsets that are
-part of the document, as well as comments and PIs that are siblings of the
-root node.</li>
-</ul>
-</div>
-<div class="section" id="id188">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parsing with the <tt class="docutils literal">no_network</tt> option could fail</li>
-</ul>
-</div>
-<div class="section" id="id189">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
-an Error as 1.3.3 did. The reason is that a number of projects currently
-misuse the previous lack of tag name validation to generate namespace
-prefixes without declaring namespaces. Apart from the danger of generating
-broken XML this way, it also breaks most of the namespace-aware tools in
-XML, including XPath, XSLT and validation. lxml 1.3.x will continue to
-support this bug with a Warning, while lxml 2.0 will be strict about
-well-formed tag names (not only regarding ':').</li>
-<li>Serialising an Element no longer includes its comment and PI siblings (only
-ElementTree serialisation includes them).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id190">
-<h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id191">
-<h2>Features added</h2>
-<ul class="simple">
-<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
-instructions and comments while parsing XML</li>
-<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
-<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
-the parser you pass.</li>
-<li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
-</ul>
-</div>
-<div class="section" id="id192">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parsing from Python Unicode strings failed on some platforms</li>
-<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id193">
-<h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id194">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id195">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>"deallocating None" crash bug</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id196">
-<h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id197">
-<h2>Features added</h2>
-<ul class="simple">
-<li>objectify.DataElement now supports setting values from existing data
-elements (not just plain Python types) and reuses defined namespaces etc.</li>
-<li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
-</ul>
-</div>
-<div class="section" id="id198">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Better way to prevent crashes in Element proxy cleanup code</li>
-<li>objectify.DataElement didn't set up None value correctly</li>
-<li>objectify.DataElement didn't check the value against the provided type hints</li>
-<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id199">
-<h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id200">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
-scheme that can access the entire tree in read-only mode to help determining
-a suitable Element class</li>
-<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
-<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
-<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
-adding processing instructions and comments around the root node</li>
-<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
-<li>Extended type annotation in objectify: cleaner annotation namespace setup
-plus new <tt class="docutils literal">deannotate()</tt> function</li>
-<li>Support for custom Element class instantiation in lxml.sax: passing a
-<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
-lookup context of that function</li>
-<li>'.' represents empty ObjectPath (identity)</li>
-<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
-<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
-keys/values/items for a libxml2 node</li>
-<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
-<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
-<li>Support for pickeling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
-<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
-<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
-a better handling of namespaces when moving elements between documents.</li>
-</ul>
-</div>
-<div class="section" id="id201">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Removing Elements from a tree could make them loose their namespace
-declarations</li>
-<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
-<li>Replacing the children slice of an Element would cut off the tails of the
-original children</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
-<li>API functions now check incoming strings for XML conformity. Zero bytes or
-low ASCII characters are no longer accepted (AssertionError).</li>
-<li>XSLT parsing failed to pass resolver context on to imported documents</li>
-<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
-<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
-<li>More ET compatible behaviour when writing out XML declarations or not</li>
-<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
-<li>Documents lost their top-level PIs and comments on serialisation</li>
-<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
-PIs are copied.</li>
-<li>Possible memory leaks in namespace handling when moving elements between
-documents</li>
-</ul>
-</div>
-<div class="section" id="id202">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>major restructuring in the documentation</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id203">
-<h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id204">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Build fixes for MS compiler</li>
-<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element["text"]</span></tt> failed</li>
-<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
-to access</li>
-<li>The pattern for attribute names in ObjectPath was too restrictive</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id205">
-<h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id206">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Rich comparison of QName objects</li>
-<li>Support for regular expressions in benchmark selection</li>
-<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
-<li>ElementInclude Python module for ElementTree compatible XInclude processing
-that honours custom resolvers registered with the source document</li>
-<li>ElementTree.parser property holds the parser used to parse the document</li>
-<li>setup.py has been refactored for greater readability and flexibility</li>
-<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
-runtime search paths has been renamed to --auto-rpath. This makes it
-possible to pass an --rpath directly to distutils; previously this was being
-shadowed.</li>
-</ul>
-</div>
-<div class="section" id="id207">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Element instantiation now uses locks to prevent race conditions with threads</li>
-<li>ElementTree.write() did not raise an exception when the file was not writable</li>
-<li>Error handling could crash under Python <= 2.4.1 - fixed by disabling thread
-support in these environments</li>
-<li>Element.find*() did not accept QName objects as path</li>
-</ul>
-</div>
-<div class="section" id="id208">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>code cleanup: redundant _NodeBase super class merged into _Element class
-Note: although the impact should be zero in most cases, this change breaks
-the compatibiliy of the public C-API</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id209">
-<h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id210">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Data elements in objectify support repr(), which is now used by dump()</li>
-<li>Source distribution now ships with a patched Pyrex</li>
-<li>New C-API function makeElement() to create new elements with text,
-tail, attributes and namespaces</li>
-<li>Reuse original parser flags for XInclude</li>
-<li>Simplified support for handling XSLT processing instructions</li>
-</ul>
-</div>
-<div class="section" id="id211">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parser resources were not freed before the next parser run</li>
-<li>Open files and XML strings returned by Python resolvers were not
-closed/freed</li>
-<li>Crash in the IDDict returned by XMLDTDID</li>
-<li>Copying Comments and ProcessingInstructions failed</li>
-<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
-<li>Memory leak when garbage collecting tailed root elements</li>
-<li>HTML script/style content was not propagated to .text</li>
-<li>Show text xincluded between text nodes correctly in .text and .tail</li>
-<li>'integer * objectify.StringElement' operation was not supported</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id212">
-<h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id213">
-<h2>Features added</h2>
-<ul class="simple">
-<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
-<li>countchildren() method on objectify.ObjectifiedElement</li>
-<li>Support custom elements for tree nodes in lxml.objectify</li>
-</ul>
-</div>
-<div class="section" id="id214">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.objectify failed to support long data values (e.g., "123L")</li>
-<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
-<li>Factories objectify.Element() and objectify.DataElement() were missing
-<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
-<li>Changing the default parser in lxml.objectify did not update the factories
-Element() and DataElement()</li>
-<li>Let lxml.objectify.Element() always generate tree elements (not data
-elements)</li>
-<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id215">
-<h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id216">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Comments and processing instructions return '<!-- coment -->' and
-'<?pi-target content?>' for repr()</li>
-<li>Parsers are now the preferred (and default) place where element class lookup
-schemes should be registered. Namespace lookup is no longer supported by
-default.</li>
-<li>Support for Python 2.5 beta</li>
-<li>Unlock the GIL for deep copying documents and for XPath()</li>
-<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
-<li>Support for parser options in iterparse()</li>
-<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
-tuples</li>
-<li>The XPath expression "/" now returns an empty list instead of raising an
-exception</li>
-<li>XML-Object API on top of lxml (lxml.objectify)</li>
-<li>Customizable Element class lookup:<ul>
-<li>different pre-implemented lookup mechanisms</li>
-<li>support for externally provided lookup functions</li>
-</ul>
-</li>
-<li>Support for processing instructions (ET-like, not compatible)</li>
-<li>Public C-level API for independent extension modules</li>
-<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
-<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
-documentation for differences)</li>
-<li>Element.nsmap property returns a mapping of all namespace prefixes known at
-the Element to their namespace URI</li>
-<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
-<li>Threading support in parsers and serializers:<ul>
-<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
-<li>File operations (on file names) free the GIL</li>
-<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
-<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
-</ul>
-</li>
-<li>Element iteration over XPath axes:<ul>
-<li>Element.iterdescendants() iterates over the descendants of an element</li>
-<li>Element.iterancestors() iterates over the ancestors of an element (from
-parent to parent)</li>
-<li>Element.itersiblings() iterates over either the following or preceding
-siblings of an element</li>
-<li>Element.iterchildren() iterates over the children of an element in either
-direction</li>
-<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
-generated elements</li>
-</ul>
-</li>
-<li>Element.getnext() and Element.getprevious() return the direct siblings of an
-element</li>
-</ul>
-</div>
-<div class="section" id="id217">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>filenames with local 8-bit encoding were not supported</li>
-<li>1.1beta did not compile under Python 2.3</li>
-<li>ignore unknown 'pyval' attribute values in objectify</li>
-<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
-<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
-<li>XPathSyntaxError now inherits from XPathError</li>
-<li>Threading race conditions in RelaxNG and XMLSchema</li>
-<li>Crash when mixing elements from XSLT results into other trees, concurrent
-XSLT is only allowed when the stylesheet was parsed in the main thread</li>
-<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
-differences in the regular expression syntax)</li>
-<li>Setting element.text to '' returned None on request, not the empty string</li>
-<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
-<li>Creating documents no longer copies the parser for later URL resolving. For
-performance reasons, only a reference is kept. Resolver updates on the
-parser will now be reflected by documents that were parsed before the
-change. Although this should rarely become visible, it is a behavioral
-change from 1.0.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id218">
-<h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id219">
-<h2>Features added</h2>
-<ul class="simple">
-<li>List-like <tt class="docutils literal">Element.extend()</tt> method</li>
-</ul>
-</div>
-<div class="section" id="id220">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in tail handling in <tt class="docutils literal">Element.replace()</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id221">
-<h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id222">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Element.replace(old, new) method to replace a subelement by another one</li>
-</ul>
-</div>
-<div class="section" id="id223">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when mixing elements from XSLT results into other trees</li>
-<li>Copying/deepcopying did not work for ElementTree objects</li>
-<li>Setting an attribute to a non-string value did not raise an exception</li>
-<li>Element.remove() deleted the tail text from the removed Element</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id224">
-<h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id225">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for setting a custom default Element class as opposed to namespace
-specific classes (which still override the default class)</li>
-</ul>
-</div>
-<div class="section" id="id226">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Rare exceptions in Python list functions were not handled</li>
-<li>Parsing accepted unicode strings with XML encoding declaration in certain
-cases</li>
-<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
-<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
-<li>XSLT and parser exception messages include the error line number</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id227">
-<h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id228">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Repeated calls to Element.attrib now efficiently return the same instance</li>
-</ul>
-</div>
-<div class="section" id="id229">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Document deallocation could crash in certain garbage collection scenarios</li>
-<li>Extension function calls in XSLT variable declarations could break the
-stylesheet and crash on repeated calls</li>
-<li>Deep copying Elements could loose namespaces declared in parents</li>
-<li>Deep copying Elements did not copy tail</li>
-<li>Parsing file(-like) objects failed to load external entities</li>
-<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
-<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
-<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
-<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id230">
-<h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id231">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Element.getiterator() and the findall() methods support finding arbitrary
-elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
-<li>Another speedup in tree iteration code</li>
-<li>General speedup of Python Element object creation and deallocation</li>
-<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
-<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
-<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
-document that contains the element.</li>
-<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
-find the element in the tree structure</li>
-<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
-<li>Comment texts can be changed through the API</li>
-<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
-<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
-<li>ElementTree.write() no longer serializes in memory (reduced memory
-footprint)</li>
-<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
-<li>Support for writing the XML representation of Elements and ElementTrees to
-Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
-<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
-<li>Parsing a unicode string no longer copies the string (reduced memory
-footprint)</li>
-<li>Parsing file-like objects reads chunks rather than the whole file (reduced
-memory footprint)</li>
-<li>Parsing StringIO objects from the start avoids copying the string (reduced
-memory footprint)</li>
-<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
-information, original encoding and XML version as seen by the parser</li>
-<li>etree module can be compiled without libxslt by commenting out the line
-<tt class="docutils literal">include "xslt.pxi"</tt> near the end of the etree.pyx source file</li>
-<li>Better error messages in parser exceptions</li>
-<li>Error reporting also works in XSLT</li>
-<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
-resolvers are registered at parser level</li>
-<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
-enabled by default, can be switched off with 'regexp=False' keyword argument</li>
-<li>Support for exslt extensions (libexslt) and libxslt extra functions
-(node-set, document, write, output)</li>
-<li>Substantial speedup in XPath.evaluate()</li>
-<li>HTMLParser for parsing (broken) HTML</li>
-<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
-implementation of libxml2 (as opposed to ET compatible XMLID)</li>
-</ul>
-</div>
-<div class="section" id="id232">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in Element.__setitem__</li>
-<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
-<li>Memory leak in XPath extension functions</li>
-<li>Memory leak in unicode related setup code</li>
-<li>Element now raises ValueError on empty tag names</li>
-<li>Namespace fixing after moving elements between documents could fail if the
-source document was freed too early</li>
-<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -> 't')
-didn't reset the namespace</li>
-<li>Unknown constants from newer libxml2 versions could raise exceptions in the
-error handlers</li>
-<li>lxml.etree compiles much faster</li>
-<li>On libxml2 <= 2.6.22, parsing strings with encoding declaration could fail
-in certain cases</li>
-<li>Document reference in ElementTree objects was not updated when the root
-element was moved to a different document</li>
-<li>Running absolute XPath expressions on an Element now evaluates against the
-root tree</li>
-<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
-<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
-objects</li>
-<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
-<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
-<li>Memory leak when using iconv encoders in tostring/write</li>
-<li>Deep copying Elements and ElementTrees maintains the document information</li>
-<li>Serialization functions raise LookupError for unknown encodings</li>
-<li>Memory deallocation crash resulting from deep copying elements</li>
-<li>Some ElementTree methods could crash if the root node was not initialized
-(neither file nor element passed to the constructor)</li>
-<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
-dictionary</li>
-<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
-<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
-<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
-ElementTree root node as reference point</li>
-<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id233">
-<h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id234">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Speedup for Element.makeelement(): the new element reuses the original
-libxml2 document instead of creating a new empty one</li>
-<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
-<li>ElementTree compatible QName class</li>
-<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
-</ul>
-</div>
-<div class="section" id="id235">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
-<li>Memory leak if write_c14n fails to write the file after conversion</li>
-<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
-<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id236">
-<h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id237">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
-SaxError on mismatch</li>
-<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
-(startElement, endElement) and defaults to empty attributes (keyword
-argument)</li>
-<li>Speedup for repeatedly accessing element tag names</li>
-<li>Minor API performance improvements</li>
-</ul>
-</div>
-<div class="section" id="id238">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory deallocation bug when using XSLT output method "html"</li>
-<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
-<li>lxml.tests package will no longer be installed (is still in source tar)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id239">
-<h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id240">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging API for libxml2 error messages</li>
-<li>Various performance improvements</li>
-<li>Benchmark script for lxml, ElementTree and cElementTree</li>
-<li>Support for registering extension functions through new FunctionNamespace
-class (see doc/extensions.txt)</li>
-<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
-<li>Support for variables in XPath expressions (also in XPath class)</li>
-<li>XPath class for compiled XPath expressions</li>
-<li>XMLID module level function (ElementTree compatible)</li>
-<li>XMLParser API for customized libxml2 parser configuration</li>
-<li>Support for custom Element classes through new Namespace API (see
-doc/namespace_extensions.txt)</li>
-<li>Common exception base class LxmlError for module exceptions</li>
-<li>real iterator support in iter(Element), Element.getiterator()</li>
-<li>XSLT objects are callable, result trees support str()</li>
-<li>Added MANIFEST.in for easier creation of RPM files.</li>
-<li>'getparent' method on elements allows navigation to an element's
-parent element.</li>
-<li>Python core compatible SAX tree builder and SAX event generator. See
-doc/sax.txt for more information.</li>
-</ul>
-</div>
-<div class="section" id="id241">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Segfaults and memory leaks in various API functions of Element</li>
-<li>Segfault in XSLT.tostring()</li>
-<li>ElementTree objects no longer interfere, Elements can be root of different
-ElementTrees at the same time</li>
-<li>document('') works in XSLT documents read from files (in-memory documents
-cannot support this due to libxslt deficiencies)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id242">
-<h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id243">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
-does the same thing, and does <em>not</em> create a shallow copy, as that
-makes no sense in the context of libxml2 trees. This means a
-potential incompatibility with ElementTree, but there's more chance
-that it works than if copy.copy() isn't supported at all.</li>
-<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
-supported and parsing of gzipped XML files works.</li>
-<li>implemented index() on elements, allowing one to find the index of a
-SubElement.</li>
-</ul>
-</div>
-<div class="section" id="id244">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Use xslt-config instead of xml2-config to find out libxml2
-directories to take into account a case where libxslt is installed
-in a different directory than libxslt.</li>
-<li>Eliminate crash condition in iteration when text nodes are changed.</li>
-<li>Passing 'None' to tostring() does not result in a segfault anymore,
-but an AssertionError.</li>
-<li>Some test fixes for Windows.</li>
-<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
-syntax errors. This should be less confusing.</li>
-<li>Fixed error with uncaught exception in Pyrex code.</li>
-<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
-segfault.</li>
-<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
-<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
-libxml2 version, as it should.</li>
-<li>Passing a UTF-8 encoded string to the XML() function would fail;
-fixed.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id245">
-<h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id246">
-<h2>Features added</h2>
-<ul class="simple">
-<li>parameters (XPath expressions) can be passed to XSLT using keyword
-parameters.</li>
-<li>Simple XInclude support. Calling the xinclude() method on a tree
-will process any XInclude statements in the document.</li>
-<li>XMLSchema support. Use the XMLSchema class or the convenience
-xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
-<li>Added convenience xslt() method on tree. This is less efficient
-than the XSLT object, but makes it easier to write quick code.</li>
-<li>Added convenience relaxng() method on tree. This is less efficient
-than the RelaxNG object, but makes it easier to write quick code.</li>
-<li>Make it possible to use XPathEvaluator with elements as well. The
-XPathEvaluator in this case will retain the element so multiple
-XPath queries can be made against one element efficiently. This
-replaces the second argument to the .evaluate() method that existed
-previously.</li>
-<li>Allow registerNamespace() to be called on an XPathEvaluator, after
-creation, to add additional namespaces. Also allow registerNamespaces(),
-which does the same for a namespace dictionary.</li>
-<li>Add 'prefix' attribute to element to be able to read prefix information.
-This is entirely read-only.</li>
-<li>It is possible to supply an extra nsmap keyword parameter to
-the Element() and SubElement() constructors, which supplies a
-prefix to namespace URI mapping. This will create namespace
-prefix declarations on these elements and these prefixes will show up
-in XML serialization.</li>
-</ul>
-</div>
-<div class="section" id="id247">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Killed yet another memory management related bug: trees created
-using newDoc would not get a libxml2-level dictionary, which caused
-problems when deallocating these documents later if they contained a
-node that came from a document with a dictionary.</li>
-<li>Moving namespaced elements between documents was problematic as
-references to the original document would remain. This has been fixed
-by applying xmlReconciliateNs() after each move operation.</li>
-<li>Can pass None to 'dump()' without segfaults.</li>
-<li>tostring() works properly for non-root elements as well.</li>
-<li>Cleaned out the tostring() method so it should handle encoding
-correctly.</li>
-<li>Cleaned out the ElementTree.write() method so it should handle encoding
-correctly. Writing directly to a file should also be faster, as there is no
-need to go through a Python string in that case. Made sure the test cases
-test both serializing to StringIO as well as serializing to a real file.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id248">
-<h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id249">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Changed setup.py so that library_dirs is also guessed. This should
-help with compilation on the Mac OS X platform, where otherwise the
-wrong library (shipping with the OS) could be picked up.</li>
-<li>Tweaked setup.py so that it picks up the version from version.txt.</li>
-</ul>
-</div>
-<div class="section" id="id250">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Do the right thing when handling namespaced attributes.</li>
-<li>fix bug where tostring() moved nodes into new documents. tostring()
-had very nasty side-effects before this fix, sorry!</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id251">
-<h1>0.5.1 (2005-04-09)</h1>
-<ul class="simple">
-<li>Python 2.2 compatibility fixes.</li>
-<li>unicode fixes in Element() and Comment() as well as XML(); unicode
-input wasn't properly being UTF-8 encoded.</li>
-</ul>
-</div>
-<div class="section" id="id252">
-<h1>0.5 (2005-04-08)</h1>
-<p>Initial public release.</p>
-</div>
-</div>
-<div class="footer">
-<hr class="footer" />
-Generated on: 2013-03-29.
-
-</div>
-</body>
-</html>
--- /dev/null
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.10: http://docutils.sourceforge.net/" />
+<title>lxml changelog</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="lxml-changelog">
+<h1 class="title">lxml changelog</h1>
+
+<div class="section" id="id1">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="features-added">
+<h2>Features added</h2>
+</div>
+<div class="section" id="bugs-fixed">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1136509">LP#1136509</a>: Passing attributes through the namespace-unaware API of
+the sax bridge (i.e. the <tt class="docutils literal">handler.startElement()</tt> method) failed
+with a <tt class="docutils literal">TypeError</tt>. Patch by Mike Bayer.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1123074">LP#1123074</a>: Fix serialisation error in XSLT output when converting
+the result tree to a Unicode string.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/105">GH#105</a>: Replace illegal usage of <tt class="docutils literal">xmlBufLength()</tt> in libxml2 2.9.0
+by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
+</ul>
+</div>
+<div class="section" id="other-changes">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id2">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id3">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id4">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1160386">LP#1160386</a>: Write access to <tt class="docutils literal">lxml.html.FormElement.fields</tt> raised
+an AttributeError in Py3.</li>
+<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
+</ul>
+</div>
+<div class="section" id="id5">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
+from the module dict.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id6">
+<h1>3.1.0 (2013-02-10)</h1>
+<div class="section" id="id7">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/89">GH#89</a>: lxml.html.clean allows overriding the set of attributes that it
+considers 'safe'. Patch by Francis Devereux.</li>
+</ul>
+</div>
+<div class="section" id="id8">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1104370">LP#1104370</a>: <tt class="docutils literal">copy.copy(el.attrib)</tt> raised an exception. It now returns
+a copy of the attributes as a plain Python dict.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
+always used the first namespace mapping that was provided for each
+path expression instead of using the one that was actually passed
+in for the current run.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
+without threading support. Patch by Ulrich Seidl.</li>
+</ul>
+</div>
+<div class="section" id="id9">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta1-2012-12-21">
+<h1>3.1beta1 (2012-12-21)</h1>
+<div class="section" id="id10">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New build-time option <tt class="docutils literal"><span class="pre">--with-unicode-strings</span></tt> for Python 2 that
+makes the API always return Unicode strings for names and text
+instead of byte strings for plain ASCII content.</li>
+<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
+<li>E factory in lxml.objectify is callable to simplify the creation of
+tags with non-identifier names without having to resort to getattr().</li>
+</ul>
+</div>
+<div class="section" id="id11">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When starting from a non-namespaced element in lxml.objectify, searching
+for a child without explicitly specifying a namespace incorrectly found
+namespaced elements with the requested local name, instead of restricting
+the search to non-namespaced children.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
+</ul>
+</div>
+<div class="section" id="id12">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
+removed from the module API of lxml.objectify.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
+many children. Patch by Anders Hammarquist.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id13">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id14">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id15">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix crash during interpreter shutdown by switching to Cython 0.17.3 for building.</li>
+</ul>
+</div>
+<div class="section" id="id16">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id17">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id18">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id19">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065924">LP#1065924</a>: Element proxies could disappear during garbage collection
+in PyPy without proper cleanup.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
+</ul>
+</div>
+<div class="section" id="id20">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id21">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id22">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id23">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>End-of-file handling was incorrect in iterparse() when reading from
+a low-level C file stream and failed in libxml2 2.9.0 due to its
+improved consistency checks.</li>
+</ul>
+</div>
+<div class="section" id="id24">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The build no longer uses Cython by default unless the generated C files
+are missing. To use Cython, pass the option "--with-cython". To ignore
+the fatal build error when Cython is required but not available (e.g. to
+run special setup.py commands that do not actually run a build), pass
+"--without-cython".</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2012-09-26">
+<h1>3.0beta1 (2012-09-26)</h1>
+<div class="section" id="id25">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Python level access to (optional) libxml2 memory debugging features
+to simplify debugging of memory leaks etc.</li>
+</ul>
+</div>
+<div class="section" id="id26">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fix a memory leak in XPath by switching to Cython 0.17.1.</li>
+<li>Some tests were adapted to work with PyPy.</li>
+</ul>
+</div>
+<div class="section" id="id27">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha2-2012-08-23">
+<h1>3.0alpha2 (2012-08-23)</h1>
+<div class="section" id="id28">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">.iter()</tt> method of elements now accepts <tt class="docutils literal">tag</tt> arguments like
+<tt class="docutils literal"><span class="pre">"{*}name"</span></tt> to search for elements with a given local name in any
+namespace. With this addition, all combinations of wildcards now work
+as expected:
+<tt class="docutils literal">"{ns}name"</tt>, <tt class="docutils literal"><span class="pre">"{}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{*}name"</span></tt>, <tt class="docutils literal"><span class="pre">"{ns}*"</span></tt>, <tt class="docutils literal"><span class="pre">"{}*"</span></tt>
+and <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>. Note that <tt class="docutils literal">"name"</tt> is equivalent to <tt class="docutils literal"><span class="pre">"{}name"</span></tt>,
+but <tt class="docutils literal">"*"</tt> is <tt class="docutils literal"><span class="pre">"{*}*"</span></tt>.
+The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
+<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
+and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
+<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
+<tt class="docutils literal">iterparse()</tt> class. Patch by Simon Sapin.</li>
+<li>C14N allows specifying the inclusive prefixes to be promoted
+to top-level during exclusive serialisation.</li>
+</ul>
+</div>
+<div class="section" id="id29">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
+failed to read the entire string.</li>
+</ul>
+</div>
+<div class="section" id="id30">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha1-2012-07-31">
+<h1>3.0alpha1 (2012-07-31)</h1>
+<div class="section" id="id31">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Initial support for building in PyPy (through cpyext).</li>
+<li>DTD objects gained an API that allows read access to their
+declarations.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
+from grep output) and for surrounding the output with a new root
+tag.</li>
+<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
+types (such as string subtypes) when building elements around them.</li>
+<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
+argument supports passing a set of tags. Tree nodes will be
+returned by the iterators if they match any of the tags.</li>
+</ul>
+</div>
+<div class="section" id="id32">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods in <tt class="docutils literal">lxml.objectify</tt> no longer use XPath
+internally, which makes them faster in many cases (especially when
+short circuiting after a single or couple of elements) and fixes
+some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>. Note that
+this means that they no longer support arbitrary XPath expressions
+but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
+The previous implementation was also redundant with the normal
+XPath support, which can be used as a replacement.</li>
+<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
+instruction that happened to be in the wrong spot. (Same for the
+other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
+<li>The error logging is less intrusive and avoids a global setup where
+possible.</li>
+<li>Fixed undefined names in html5lib parser.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
+<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
+another Element as parameter.</li>
+<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
+properties immutable (as in objectify, for example), inserting text
+when creating Elements through the E-Factory feature of the class
+constructor would fail with an exception, stating that the text
+cannot be modified.</li>
+</ul>
+</div>
+<div class="section" id="id33">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The code base was overhauled to properly use 'const' where the API
+of libxml2 and libxslt requests it. This also has an impact on the
+public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
+well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
+Code that uses these declarations may have to be adapted. On the
+plus side, this fixes several C compiler warnings, also for user
+code, thus making it easier to spot real problems again.</li>
+<li>The functionality of "lxml.cssselect" was moved into a separate PyPI
+package called "cssselect". To continue using it, you must install
+that package separately. The "lxml.cssselect" module is still
+available and provides the same interface, provided the "cssselect"
+package can be imported at runtime.</li>
+<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
+arguments are now sorted by (namespaced) name before being created
+to make their order predictable for serialisation and iteration.
+Note that adding or deleting attributes afterwards does not take
+that order into account, i.e. setting a new attribute appends it
+after the existing ones.</li>
+<li>Several classes that are for internal use only were removed
+from the <tt class="docutils literal">lxml.etree</tt> module dict:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
+_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
+__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
+_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
+_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
+_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
+_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
+_ParserSchemaValidationContext, _XPathContext,
+_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
+<li>Several internal classes can no longer be inherited from:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
+_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
+_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
+_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
+_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id34">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id35">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id36">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Passing long Unicode strings into the <tt class="docutils literal">feed()</tt> parser interface
+failed to read the entire string.</li>
+</ul>
+</div>
+<div class="section" id="id37">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id38">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id39">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id40">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when merging text nodes in <tt class="docutils literal">element.remove()</tt>.</li>
+<li>Crash in sax/target parser when reporting empty doctype.</li>
+</ul>
+</div>
+<div class="section" id="id41">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id42">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id43">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id44">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when building an nsmap (Element property) with empty
+namespace URIs.</li>
+<li>Crash due to race condition when errors (or user messages) occur
+during threaded XSLT processing.</li>
+<li>XSLT stylesheet compilation could ignore compilation errors.</li>
+</ul>
+</div>
+<div class="section" id="id45">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id46">
+<h1>2.3.3 (2012-01-04)</h1>
+<div class="section" id="id47">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.tostring()</tt> gained new serialisation options
+<tt class="docutils literal">with_tail</tt> and <tt class="docutils literal">doctype</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id48">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
+requesting start events.</li>
+<li>Fixed parsing of more selectors in cssselect. Whitespace before
+pseudo-elements and pseudo-classes is significant as it is a
+descendant combinator.
+"E :pseudo" should parse the same as "E *:pseudo", not "E:pseudo".
+Patch by Simon Sapin.</li>
+<li>lxml.html.diff no longer raises an exception when hitting
+'img' tags without 'src' attribute.</li>
+</ul>
+</div>
+<div class="section" id="id49">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id50">
+<h1>2.3.2 (2011-11-11)</h1>
+<div class="section" id="id51">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
+<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
+declarations (and generally clean up the namespace declarations)
+after removing the type annotations.</li>
+<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
+copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
+of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
+</ul>
+</div>
+<div class="section" id="id52">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed the "descendant" bug in cssselect a second time (after a first
+fix in lxml 2.3.1). The previous change resulted in a serious
+performance regression for the XPath based evaluation of the
+translated expression. Note that this breaks the usage of some of
+the generated XPath expressions as XSLT location paths that
+previously worked in 2.3.1.</li>
+<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
+">", "+" and "~" is now correctly ignored. Previously is was parsed as
+a descendant combinator. For example, "div> .foo" was parsed the same as
+"div>* .foo" instead of "div>.foo". Patch by Simon Sapin.</li>
+</ul>
+</div>
+<div class="section" id="id53">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id54">
+<h1>2.3.1 (2011-09-25)</h1>
+<div class="section" id="id55">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New option <tt class="docutils literal">kill_tags</tt> in <tt class="docutils literal">lxml.html.clean</tt> to remove specific
+tags and their content (i.e. their whole subtree).</li>
+<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
+pseudo-attributes from the text content of processing instructions.</li>
+<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
+used to compile external C code against lxml.etree. This is
+specifically required for statically linked lxml builds when code
+needs to compile against the exact same header file versions as lxml
+itself.</li>
+<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
+<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
+closed after reading or not. By default, the file will be closed,
+as the user is not expected to keep a reference to it.</li>
+</ul>
+</div>
+<div class="section" id="id56">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning didn't remove 'data:' links.</li>
+<li>The html5lib parser integration now uses the 'official'
+implementation in html5lib itself, which makes it work with newer
+releases of the library.</li>
+<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
+tag name when the corresponding start event inferred the same plain
+tag name to be in the default namespace.</li>
+<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
+<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use. This
+reverts a change in lxml 2.3 where all files would be closed. It is
+the users responsibility to properly close the file(-like) object,
+also in error cases.</li>
+<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
+<li>In lxml.cssselect, use the xpath 'A//B' (short for
+'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
+the css descendant selector ('A B'). This makes a few edge cases
+like <tt class="docutils literal">"div <span class="pre">*:last-child"</span></tt> consistent with the selector behavior in
+WebKit and Firefox, and makes more css expressions valid location
+paths (for use in xsl:template match).</li>
+<li>In lxml.html, non-selected <tt class="docutils literal"><option></tt> tags no longer show up in the
+collected form values.</li>
+<li>Adding/removing <tt class="docutils literal"><option></tt> values to/from a multiple select form
+field properly selects them and unselects them.</li>
+</ul>
+</div>
+<div class="section" id="id57">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Static builds can specify the download directory with the
+<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id58">
+<h1>2.3 (2011-02-06)</h1>
+<div class="section" id="id59">
+<h2>Features added</h2>
+<ul class="simple">
+<li>When looking for children, <tt class="docutils literal">lxml.objectify</tt> takes '{}tag' as
+meaning an empty namespace, as opposed to the parent namespace.</li>
+</ul>
+</div>
+<div class="section" id="id60">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When finished reading from a file-like object, the parser
+immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
+<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
+file.</li>
+<li>Work-around for libxml2 bug that can leave the HTML parser in a
+non-functional state after parsing a severly broken document (fixed
+in libxml2 2.7.8).</li>
+<li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id61">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some public functions in the Cython-level C-API have more explicit
+return types.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2010-09-06">
+<h1>2.3beta1 (2010-09-06)</h1>
+<div class="section" id="id62">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id63">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
+<tt class="docutils literal">base_url</tt> parameters.</li>
+<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
+<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
+use of os.tempnam. It now takes an optional 'encoding' parameter.</li>
+</ul>
+</div>
+<div class="section" id="id64">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha2-2010-07-24">
+<h1>2.3alpha2 (2010-07-24)</h1>
+<div class="section" id="id65">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id66">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XSLT when generating text-only result documents with a
+stylesheet created in a different thread.</li>
+</ul>
+</div>
+<div class="section" id="id67">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
+(following ElementTree 1.3).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha1-2010-06-19">
+<h1>2.3alpha1 (2010-06-19)</h1>
+<div class="section" id="id68">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Keyword argument <tt class="docutils literal">namespaces</tt> in <tt class="docutils literal">lxml.cssselect.CSSSelector()</tt>
+to pass a prefix-to-namespace mapping for the selector.</li>
+<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
+globally registers a namespace prefix for a namespace that newly
+created Elements in that namespace will use automatically. Follows
+ElementTree 1.3.</li>
+<li>Support 'unicode' string name as encoding parameter in
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
+match the upcoming ElementTree 1.3 that will ship in the standard
+library of Python 3.2/2.7. This includes extended support for
+predicates as well as namespace prefixes (as known from XPath).</li>
+<li>During regular XPath evaluation, various ESXLT functions are
+available within their namespace when using libxslt 1.1.26 or later.</li>
+<li>Support passing a readily configured logger instance into
+<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
+<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
+override the DOCTYPE (internal subset) of the document.</li>
+<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
+to append the resulting content directly to an output element.</li>
+<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
+XSLT extension element itself.</li>
+<li>ISO-Schematron support based on the de-facto Schematron reference
+'skeleton implementation'.</li>
+<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
+parameters.</li>
+<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
+overhead.</li>
+<li>Setting the value of a namespaced attribute always uses a prefixed
+namespace instead of the default namespace even if both declare the
+same namespace URI. This avoids serialisation problems when an
+attribute from a default namespace is set on an element from a
+different namespace.</li>
+<li>XSLT extension elements: support for XSLT context nodes other than
+elements: document root, comments, processing instructions.</li>
+<li>Support for strings (in addition to Elements) in node-sets returned
+by extension functions.</li>
+<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
+the document on submit.</li>
+<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
+<li>Namespace URIs get validated against RFC 3986 at the API level
+(required by the XML namespace specification).</li>
+<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
+(compatible with ElementTree).</li>
+</ul>
+</div>
+<div class="section" id="id69">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>API is hardened against invalid proxy instances to prevent crashes
+due to incorrectly instantiated Element instances.</li>
+<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
+<li>Export ElementTree compatible XML parser class as
+<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
+<li>ObjectifiedDataElements in lxml.objectify were not hashable. They
+now use the hash value of the underlying Python value (string,
+number, etc.) to which they compare equal.</li>
+<li>Parsing broken fragments in lxml.html could fail if the fragment
+contained an orphaned closing '</div>' tag.</li>
+<li>Using XSLT extension elements around the root of the output document
+crashed.</li>
+<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr="val"]</span></tt> and
+<tt class="docutils literal">x <span class="pre">[attr="val"]</span></tt> (with a space). The latter now matches the
+attribute independent of the element.</li>
+<li>Rewriting multiple links inside of HTML text content could end up
+replacing unrelated content as replacements could impact the
+reported position of subsequent matches. Modifications are now
+simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
+return links in reversed order if they appear inside the same text
+node. Thus, replacements and link-internal modifications no longer
+change the position of links reported afterwards.</li>
+<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
+not represent the complete raw value (including child tags etc.). It
+now serialises the complete content on read and replaces the
+complete content by a string on write.</li>
+<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
+parsing failed. Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
+called after parsing, regardless of the outcome.</li>
+</ul>
+</div>
+<div class="section" id="id70">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.1.2 and later.</li>
+<li>Static MS Windows builds can now download their dependencies
+themselves.</li>
+<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
+Element object. It therefore no longer requires the garbage
+collector to clean up.</li>
+<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id71">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id72">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li>Import fix for urljoin in Python 3.1+.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id73">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id74">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XSLT when generating text-only result documents with a
+stylesheet created in a different thread.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id75">
+<h1>2.2.6 (2010-03-02)</h1>
+<div class="section" id="id76">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed several Python 3 regressions by building with Cython 0.11.3.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id77">
+<h1>2.2.5 (2010-02-28)</h1>
+<div class="section" id="id78">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for running XSLT extension elements on the input root node
+(e.g. in a template matching on "/").</li>
+</ul>
+</div>
+<div class="section" id="id79">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XPath evaluation when reading smart strings from a document
+other than the original context document.</li>
+<li>Support recent versions of html5lib by not requiring its
+<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
+<li>Manually instantiating the custom element classes in
+<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
+<li>Invalid XML text characters were not rejected by the API when they
+appeared in unicode strings directly after non-ASCII characters.</li>
+<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
+<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
+<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
+<li>Crash in XSLT extension elements when the XSLT context node is not
+an element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id80">
+<h1>2.2.4 (2009-11-11)</h1>
+<div class="section" id="id81">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Static build of libxml2/libxslt was broken.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id82">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id83">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id84">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
+parser.</li>
+<li>Looking up and deleting attributes without a namespace could hit a
+namespaced attribute of the same name instead.</li>
+<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
+ones) could leave a partially initialised element in the tree.</li>
+<li>Modifying trees that contain parsed entity references could result
+in an infinite loop.</li>
+<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
+attribute value was rejected as a non-unicode/non-ascii string</li>
+<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
+messages.</li>
+<li>Invalid syntax in CSS expressions could lead to an infinite loop in
+the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS special character escapes were not properly handled in
+<tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
+attribute were not handled correctly. The HTML standard dictates
+that their value is defined by their text content. This is now
+supported by lxml.html.</li>
+<li>XPath raised a TypeError when finding CDATA sections. This is now
+fully supported.</li>
+<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
+namespaces when annotation is disabled.</li>
+<li>Feed parser failed to honout the 'recover' option on parse errors.</li>
+<li>Diverting the error logging to Python's logging system was broken.</li>
+</ul>
+</div>
+<div class="section" id="id85">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id86">
+<h1>2.2.2 (2009-06-21)</h1>
+<div class="section" id="id87">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New helper functions <tt class="docutils literal">strip_attributes()</tt>, <tt class="docutils literal">strip_elements()</tt>,
+<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
+from a subtree.</li>
+</ul>
+</div>
+<div class="section" id="id88">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Namespace cleanup on subtree insertions could result in missing
+namespace declarations (and potentially crashes) if the element
+defining a namespace was deleted and the namespace was not used by
+the top element of the inserted subtree but only in deeper subtrees.</li>
+<li>Raising an exception from a parser target callback didn't always
+terminate the parser.</li>
+<li>Only {true, false, 1, 0} are accepted as the lexical representation for
+BoolElement ({True, False, T, F, t, f} not any more), restoring lxml <= 2.0
+behaviour.</li>
+</ul>
+</div>
+<div class="section" id="id89">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id90">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id91">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Injecting default attributes into a document during XML Schema
+validation (also at parse time).</li>
+<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
+restrictions imposed by libxml2 2.7.</li>
+</ul>
+</div>
+<div class="section" id="id92">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The script for statically building libxml2 and libxslt didn't work
+in Py3.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
+for parsing (which could lead to a crash before release 2.6.24).</li>
+</ul>
+</div>
+<div class="section" id="id93">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id94">
+<h1>2.2 (2009-03-21)</h1>
+<div class="section" id="id95">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
+<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
+on serialisation.</li>
+</ul>
+</div>
+<div class="section" id="id96">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing an XML Schema with external imports from a
+filename.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2009-02-27">
+<h1>2.2beta4 (2009-02-27)</h1>
+<div class="section" id="id97">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support strings and instantiable Element classes as child arguments
+to the constructor of custom Element classes.</li>
+<li>GZip compression support for serialisation to files and file-like
+objects.</li>
+</ul>
+</div>
+<div class="section" id="id98">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Deep-copying an ElementTree copied neither its sibling PIs and
+comments nor its internal/external DTD subsets.</li>
+<li>Soupparser failed on broken attributes without values.</li>
+<li>Crash in XSLT when overwriting an already defined attribute using
+<tt class="docutils literal">xsl:attribute</tt>.</li>
+<li>Crash bug in exception handling code under Python 3. This was due
+to a problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
+<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
+was evaluated incorrectly.</li>
+</ul>
+</div>
+<div class="section" id="id99">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.0.1.</li>
+<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
+for Elements without text content.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2009-02-17">
+<h1>2.2beta3 (2009-02-17)</h1>
+<div class="section" id="id100">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">XSLT.strparam()</tt> class method to wrap quoted string parameters
+that require escaping.</li>
+</ul>
+</div>
+<div class="section" id="id101">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in XPath evaluators.</li>
+<li>Crash when parsing indented XML in one thread and merging it with
+other documents parsed in another thread.</li>
+<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
+string failed.</li>
+<li>Fixes following changes in Python 3.0.1.</li>
+<li>Minor fixes for Python 3.</li>
+</ul>
+</div>
+<div class="section" id="id102">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The global error log (which is copied into the exception log) is now
+local to a thread, which fixes some race conditions.</li>
+<li>More robust error handling on serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2009-01-25">
+<h1>2.2beta2 (2009-01-25)</h1>
+<div class="section" id="id103">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling. This was due to a
+problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
+<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url("link")</span></tt> incorrectly
+(treating the quotation marks as part of the link).</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id104">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id105">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling. This was due to a
+problem in Cython, not lxml itself.</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2008-12-12">
+<h1>2.2beta1 (2008-12-12)</h1>
+<div class="section" id="id106">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Allow <tt class="docutils literal">lxml.html.diff.htmldiff</tt> to accept Element objects, not
+just HTML strings.</li>
+</ul>
+</div>
+<div class="section" id="id107">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+<li>Fixed missing whitespace before <tt class="docutils literal"><span class="pre">Link:...</span></tt> in <tt class="docutils literal">lxml.html.diff</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id108">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Export <tt class="docutils literal">lxml.html.parse</tt>.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id109">
+<h1>2.1.4 (2008-12-12)</h1>
+<div class="section" id="id110">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id111">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id112">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when using an XPath evaluator in multiple threads.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha1-2008-11-23">
+<h1>2.2alpha1 (2008-11-23)</h1>
+<div class="section" id="id113">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for XSLT result tree fragments in XPath/XSLT extension
+functions.</li>
+<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
+<li>New options for exclusive C14N and C14N without comments.</li>
+<li>Instantiating a custom Element classes creates a new Element.</li>
+</ul>
+</div>
+<div class="section" id="id114">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>XSLT didn't inherit the parse options of the input document.</li>
+<li>0-bytes could slip through the API when used inside of Unicode
+strings.</li>
+<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
+that end in a parenthesis, will be linked in their entirety (typical
+with Wikipedia links).</li>
+</ul>
+</div>
+<div class="section" id="id115">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id116">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id117">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id118">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Ref-count leaks when lxml enters a try-except statement while an
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+<li>Parser Unicode decoding errors could get swallowed by other
+exceptions.</li>
+<li>Name/import errors in some Python modules.</li>
+<li>Internal DTD subsets that did not specify a system or public ID were
+not serialised and did not appear in the docinfo property of
+ElementTrees.</li>
+<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
+<li>Test suite fixes for libxml2 2.7.</li>
+<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
+<li>Resolver.resolve_file() was broken.</li>
+<li>Overriding the parser encoding didn't work for many encodings.</li>
+</ul>
+</div>
+<div class="section" id="id119">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id120">
+<h1>2.0.10 (2008-11-17)</h1>
+<div class="section" id="id121">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Ref-count leaks when lxml enters a try-except statement while an
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id122">
+<h1>2.1.2 (2008-09-05)</h1>
+<div class="section" id="id123">
+<h2>Features added</h2>
+<ul class="simple">
+<li>lxml.etree now tries to find the absolute path name of files when
+parsing from a file-like object. This helps custom resolvers when
+resolving relative URLs, as lixbml2 can prepend them with the path
+of the source document.</li>
+</ul>
+</div>
+<div class="section" id="id124">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+<div class="section" id="id125">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id126">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id127">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id128">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id129">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id130">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing XSLT stylesheets in a thread and using them in
+another.</li>
+<li>Encoding problem when including text with ElementInclude under
+Python 3.</li>
+</ul>
+</div>
+<div class="section" id="id131">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id132">
+<h1>2.0.8 (2008-07-24)</h1>
+<div class="section" id="id133">
+<h2>Features added</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
+with whitespace in URL attributes.</li>
+</ul>
+</div>
+<div class="section" id="id134">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing XSLT stylesheets in a thread and using them in
+another.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id135">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id136">
+<h1>2.1 (2008-07-09)</h1>
+<div class="section" id="id137">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
+keyword option).</li>
+<li><tt class="docutils literal">lxml.html.rewrite_links()</tt> strips links to work around documents
+with whitespace in URL attributes.</li>
+</ul>
+</div>
+<div class="section" id="id138">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Custom resolvers were not used for XMLSchema includes/imports and
+XInclude processing.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id139">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
+<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
+<li>Speed-up when running XSLTs on documents from other threads</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id140">
+<h1>2.0.7 (2008-06-20)</h1>
+<div class="section" id="id141">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
+</ul>
+</div>
+<div class="section" id="id142">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Descending dot-separated classes in CSS selectors were not resolved
+correctly.</li>
+<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
+<li>Potential threading problem in XInclude.</li>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+</ul>
+</div>
+<div class="section" id="id143">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2008-06-19">
+<h1>2.1beta3 (2008-06-19)</h1>
+<div class="section" id="id144">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
+<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
+<li>Support for parsing from file-like objects that return unicode
+strings.</li>
+<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
+namespace declarations from a (sub)tree (experimental).</li>
+<li>XSLT results support the buffer protocol in Python 3.</li>
+<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
+a parsable string will return either a UTF-8 encoded byte string, a
+unicode string or a tree, based on the type of the input.
+Previously, the result was always a byte string or a tree.</li>
+<li>Support for Python 2.6 and 3.0 beta.</li>
+<li>File name handling now uses a heuristic to convert between byte
+strings (usually filenames) and unicode strings (usually URLs).</li>
+<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
+<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
+on reading under Python 2.x.</li>
+<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
+lxml.html (experimental).</li>
+<li>Most features in lxml.html work for XHTML namespaced tag names
+(experimental).</li>
+</ul>
+</div>
+<div class="section" id="id145">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+<li>A number of problems related to unicode/byte string conversion of
+filenames and error messages were fixed.</li>
+<li>Building on MacOS-X now passes the "flat_namespace" option to the C
+compiler, which reportedly prevents build quirks and crashes on this
+platform.</li>
+<li>Windows build was broken.</li>
+<li>Rare crash when serialising to a file object with certain encodings.</li>
+</ul>
+</div>
+<div class="section" id="id146">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
+namespaces, etc. will result in a ValueError instead of an
+AssertionError (just like the tag well-formedness check).</li>
+<li>Up to several times faster attribute access (i.e. tree traversal) in
+lxml.objectify.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id147">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id148">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id149">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Incorrect evaluation of <tt class="docutils literal"><span class="pre">el.find("tag[child]")</span></tt>.</li>
+<li>Windows build was broken.</li>
+<li>Moving a subtree from a document created in one thread into a
+document of another thread could crash when the rest of the source
+document is deleted while the subtree is still in use.</li>
+<li>Rare crash when serialising to a file object with certain encodings.</li>
+</ul>
+</div>
+<div class="section" id="id150">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml should now build without problems on MacOS-X.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2008-05-02">
+<h1>2.1beta2 (2008-05-02)</h1>
+<div class="section" id="id151">
+<h2>Features added</h2>
+<ul class="simple">
+<li>All parse functions in lxml.html take a <tt class="docutils literal">parser</tt> keyword argument.</li>
+<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
+attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
+pre-configured for the lxml.html package.</li>
+</ul>
+</div>
+<div class="section" id="id152">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Moving a subtree from a document created in one thread into a
+document of another thread could crash when the rest of the source
+document is deleted while the subtree is still in use.</li>
+<li>Passing an nsmap when creating an Element will no longer strip
+redundantly defined namespace URIs. This prevented the definition
+of more than one prefix for a namespace on the same Element.</li>
+</ul>
+</div>
+<div class="section" id="id153">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>If the default namespace is redundantly defined with a prefix on the
+same Element, the prefix will now be preferred for subelements and
+attributes. This allows users to work around a problem in libxml2
+where attributes from the default namespace could serialise without
+a prefix even when they appear on an Element with a different
+namespace (i.e. they would end up in the wrong namespace).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id154">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id155">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id156">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state "STOPPED", which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
+</ul>
+</div>
+<div class="section" id="id157">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="beta1-2008-04-15">
+<h1>2.1beta1 (2008-04-15)</h1>
+<div class="section" id="id158">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
+<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
+sections. Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
+sections by their text content.</li>
+<li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
+</ul>
+</div>
+<div class="section" id="id159">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state "STOPPED", which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 >= 2.6.31.</li>
+<li>lxml.etree accepted non well-formed namespace prefix names.</li>
+</ul>
+</div>
+<div class="section" id="id160">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
+takes care of namespace cleanup when moving elements between
+different namespace contexts.</li>
+<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
+parser or through lxml.html now end up in a new HTML document
+(doctype HTML 4.01 Transitional) instead of a generic XML document.
+This mostly impacts the serialisation and the availability of a DTD
+context.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id161">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id162">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id163">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Hanging thread in conjunction with GTK threading.</li>
+<li>Crash bug in iterparse when moving elements into other documents.</li>
+<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</li>
+<li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
+</ul>
+</div>
+<div class="section" id="id164">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="alpha1-2008-03-27">
+<h1>2.1alpha1 (2008-03-27)</h1>
+<div class="section" id="id165">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
+<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
+returns a dict of access configuration options.</li>
+<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
+<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
+<li>Extension elements for XSLT (experimental!)</li>
+<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
+an Element.</li>
+<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
+</ul>
+</div>
+<div class="section" id="id166">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Default encoding for plain text serialisation was different from
+that of XML serialisation (UTF-8 instead of ASCII).</li>
+</ul>
+</div>
+<div class="section" id="id167">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Minor API speed-ups.</li>
+<li>The benchmark suite now uses tail text in the trees, which makes the
+absolute numbers incomparable to previous results.</li>
+<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
+used to enable syntax highlighting for the doctest examples.</li>
+</ul>
+<p>Most long-time deprecated functions and methods were removed:</p>
+<ul>
+<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
+<tt class="docutils literal">etree.use_global_python_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
+<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
+<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
+<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
+yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
+instead.</p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
+<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
+<tt class="docutils literal">objectify.set_default_parser()</tt></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id168">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id169">
+<h2>Features added</h2>
+<ul class="simple">
+<li>soupparser.parse() allows passing keyword arguments on to
+BeautifulSoup.</li>
+<li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id170">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
+<tt class="docutils literal"><br></tt>).</li>
+<li>Handle entity replacements correctly in target parser.</li>
+<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
+<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
+which made them turn up in text content.</li>
+<li>Attribute assignment of custom PyTypes in objectify could fail to
+correctly serialise the value to a string.</li>
+</ul>
+</div>
+<div class="section" id="id171">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
+<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API. The old module
+remains for compatibility with ElementTree's own ElementSoup module.</li>
+<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
+build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
+<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
+compiler options. The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
+option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id172">
+<h1>2.0.2 (2008-02-22)</h1>
+<div class="section" id="id173">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support passing <tt class="docutils literal">base_url</tt> to file parser functions to override
+the filename of the file(-like) object.</li>
+</ul>
+</div>
+<div class="section" id="id174">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The prefix for objectify's pytype namespace was missing from the set
+of default prefixes.</li>
+<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
+<li>Error type names in RelaxNG were reported incorrectly.</li>
+<li>Slice deletion bug fixed in objectify.</li>
+</ul>
+</div>
+<div class="section" id="id175">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
+<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
+(<tt class="docutils literal"><span class="pre">method="xml"</span></tt> for XHTML output).</li>
+<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
+<tt class="docutils literal">base_url</tt> argument.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id176">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id177">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
+<li>Loads of new docstrings reflect the signature of functions and
+methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
+</ul>
+</div>
+<div class="section" id="id178">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
+<tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
+was an unnamed input field. Now unnamed input fields are completely
+ignored.</li>
+<li>Setting an element slice in objectify could insert slice-overlapping
+elements at the wrong position.</li>
+</ul>
+</div>
+<div class="section" id="id179">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The generated API documentation was cleaned up and disburdened from
+non-public classes etc.</li>
+<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
+<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml. If
+you want to use it, feel free to copy it over to your own source
+base.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
+compiler options.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id180">
+<h1>2.0 (2008-02-01)</h1>
+<div class="section" id="id181">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Passing the <tt class="docutils literal">unicode</tt> type as <tt class="docutils literal">encoding</tt> to <tt class="docutils literal">tostring()</tt> will
+serialise to unicode. The <tt class="docutils literal">tounicode()</tt> function is now
+deprecated.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
+<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
+parser with the usual objectify setup.</li>
+<li>Plain ASCII XPath string results are no longer forced into unicode
+objects as in 2.0beta1, but are returned as plain strings as before.</li>
+<li>All XPath string results are 'smart' objects that have a
+<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
+<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
+<li>More accurate exception messages in validator creation.</li>
+<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
+<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
+selection make their Element container accessible through a
+<tt class="docutils literal">getparent()</tt> method. As a side-effect, they are now always
+unicode objects (even ASCII strings).</li>
+<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
+copy if they were not created in that thread.</li>
+<li>Invalid entity names and character references will be rejected by
+the <tt class="docutils literal">Entity()</tt> factory.</li>
+<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
+e.g. <tt class="docutils literal">&amp;</tt>.</li>
+<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
+in ET 1.3)</li>
+<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
+<li>ElementTree compatible TreeBuilder class.</li>
+<li>Use default prefixes for some common XML namespaces.</li>
+<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
+two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
+more general <tt class="docutils literal">allow_element(el)</tt>.</li>
+<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
+etree and in objectify</li>
+<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
+resolving a document as string data.</li>
+<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
+<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
+the special checking for one test.</li>
+<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
+The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
+<tt class="docutils literal">error_log</tt>.</li>
+<li>The normal parsers and the feed parser interface are now separated
+and can be used concurrently on the same parser instance.</li>
+<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
+ElementTree 1.3</li>
+<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
+parsing with the HTML parser (note that this interface may be
+subject to change)</li>
+<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
+of the parsed documents.</li>
+<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
+<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
+types in one step. Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
+<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
+argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
+serialise as XML, HTML or plain text content.</li>
+<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
+<tt class="docutils literal">findall()</tt></li>
+<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
+<li>Setting a QName object as value of the .text property or as an attribute
+will resolve its prefix in the respective context</li>
+<li>ElementTree-like parser target interface as described in
+<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
+<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
+(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
+<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
+integration with objectify. Provides extended type support based on
+registered PyTypes.</li>
+<li>XSLT objects now support deep copying</li>
+<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
+subelement straight with text, tail and attributes.</li>
+<li>XPath extension functions can now access the current context node
+(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
+(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
+parameter</li>
+<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
+<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
+doctests based on XML/HTML output. Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
+<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
+<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
+selectors.</li>
+<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
+treatment.</li>
+<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
+instance and no longer global.</li>
+<li>Schematron validation (incomplete in libxml2)</li>
+<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
+conversion function to strings to support setting text values from arbitrary
+types.</li>
+<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes. XML
+parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
+False to keep entities in the document.</li>
+<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
+<li>Error specific messages in XPath parsing and evaluation
+NOTE: for evaluation errors, you will now get an XPathEvalError instead of
+an XPathSyntaxError. To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
+<li>The regular expression functions in XPath now support passing a node-set
+instead of a string</li>
+<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
+<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
+</ul>
+</div>
+<div class="section" id="id182">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
+<li>Some Python 2.4-isms prevented lxml from building/running under
+Python 2.3.</li>
+<li>XPath on ElementTrees could crash when selecting the virtual root
+node of the ElementTree.</li>
+<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
+<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
+<li>Minor bugs in XSLT error message formatting.</li>
+<li>Result document memory leak in target parser.</li>
+<li>Target parser failed to report comments.</li>
+<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal"><object></tt>
+tags weren't recognized. (Note: plugin-specific link parameters
+still aren't recognized.) Also, the <tt class="docutils literal"><embed></tt> tag, though not
+standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
+<li>Using custom resolvers on XSLT stylesheets parsed from a string
+could request ill-formed URLs.</li>
+<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal"><tag <span class="pre">xmlns="..."></span></tt> in your
+output, it will then be namespace-neutral (before the ellipsis was
+treated as a real namespace).</li>
+<li>AttributeError in feed parser on parse errors</li>
+<li>XML feed parser setup problem</li>
+<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
+<li>lxml failed to serialise namespace declarations of elements other than the
+root node of a tree</li>
+<li>Race condition in XSLT where the resolver context leaked between concurrent
+XSLT calls</li>
+<li>lxml.etree did not check tag/attribute names</li>
+<li>The XML parser did not report undefined entities as error</li>
+<li>The text in exceptions raised by XML parsers, validators and XPath
+evaluators now reports the first error that occurred instead of the last</li>
+<li>Passing '' as XPath namespace prefix did not raise an error</li>
+<li>Thread safety in XPath evaluators</li>
+</ul>
+</div>
+<div class="section" id="id183">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Exceptions carry only the part of the error log that is related to
+the operation that caused the error.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
+file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
+<li>The test suite now skips most doctests under Python 2.3.</li>
+<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
+realclean</tt> instead)</li>
+<li>Minor performance tweaks for Element instantiation and subelement
+creation</li>
+<li>Various places in the XPath, XSLT and iteration APIs now require
+keyword-only arguments.</li>
+<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
+match the order used in all other iteration methods. The second
+argument ('preceding') is now a keyword-only argument.</li>
+<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
+reverted to return an iterator as it did in lxml 1.x. The ET API
+specification allows it to return either a sequence or an iterator,
+and it traditionally returned a sequence in ET and an iterator in
+lxml. However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
+method, which should be used in new code wherever possible.</li>
+<li>The 'pretty printed' serialisation of ElementTree objects now
+inserts newlines at the root level between processing instructions,
+comments and the root tag.</li>
+<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
+<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
+required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
+<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
+<li>The module source files were renamed to "lxml.*.pyx", such as
+"lxml.etree.pyx". This was changed for consistency with the way
+Pyrex commonly handles package imports. The main effect is that
+classes now know about their fully qualified class name, including
+the package name of their module.</li>
+<li>Keyword-only arguments in some API functions, especially in the
+parsers and serialisers.</li>
+<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
+between HTML tags and XML tags based on the parser that was used to
+parse or create them. HTML tags no longer reject any non-ASCII
+characters in tag names but only spaces and the special characters
+<tt class="docutils literal"><span class="pre"><>&/"'</span></tt>.</li>
+<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
+(which can crash on certain XPath errors)</li>
+<li>Type annotation in objectify now preserves the already annotated type by
+default to prevent loosing type information that is already there.</li>
+<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
+an iterator (ElementTree 1.3 compatible behaviour)</li>
+<li>objectify.PyType for None is now called "NoneType"</li>
+<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
+original name is still available as alias</li>
+<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
+generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
+<li>Major refactoring in XPath/XSLT extension function code</li>
+<li>Network access in parsers disabled by default</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id184">
+<h1>1.3.6 (2007-10-29)</h1>
+<div class="section" id="id185">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Backported decref crash fix from 2.0</li>
+<li>Well hidden free-while-in-use crash bug in ObjectPath</li>
+</ul>
+</div>
+<div class="section" id="id186">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The test suites now run <tt class="docutils literal">gc.collect()</tt> in the <tt class="docutils literal">tearDown()</tt>
+methods. While this makes them take a lot longer to run, it also
+makes it easier to link a specific test to garbage collection
+problems that would otherwise appear in later tests.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id187">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id188">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id189">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>lxml.etree could crash when adding more than 10000 namespaces to a
+document</li>
+<li>lxml failed to serialise namespace declarations of elements other
+than the root node of a tree</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id190">
+<h1>1.3.4 (2007-08-30)</h1>
+<div class="section" id="id191">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The <tt class="docutils literal">ElementMaker</tt> in <tt class="docutils literal">lxml.builder</tt> now accepts the keyword arguments
+<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
+creates.</li>
+<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
+and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
+subset of the document respectively.</li>
+<li>Serialising an ElementTree now includes any internal DTD subsets that are
+part of the document, as well as comments and PIs that are siblings of the
+root node.</li>
+</ul>
+</div>
+<div class="section" id="id192">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parsing with the <tt class="docutils literal">no_network</tt> option could fail</li>
+</ul>
+</div>
+<div class="section" id="id193">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
+an Error as 1.3.3 did. The reason is that a number of projects currently
+misuse the previous lack of tag name validation to generate namespace
+prefixes without declaring namespaces. Apart from the danger of generating
+broken XML this way, it also breaks most of the namespace-aware tools in
+XML, including XPath, XSLT and validation. lxml 1.3.x will continue to
+support this bug with a Warning, while lxml 2.0 will be strict about
+well-formed tag names (not only regarding ':').</li>
+<li>Serialising an Element no longer includes its comment and PI siblings (only
+ElementTree serialisation includes them).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id194">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id195">
+<h2>Features added</h2>
+<ul class="simple">
+<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
+instructions and comments while parsing XML</li>
+<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
+<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
+the parser you pass.</li>
+<li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
+</ul>
+</div>
+<div class="section" id="id196">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parsing from Python Unicode strings failed on some platforms</li>
+<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id197">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id198">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id199">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>"deallocating None" crash bug</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id200">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id201">
+<h2>Features added</h2>
+<ul class="simple">
+<li>objectify.DataElement now supports setting values from existing data
+elements (not just plain Python types) and reuses defined namespaces etc.</li>
+<li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
+</ul>
+</div>
+<div class="section" id="id202">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Better way to prevent crashes in Element proxy cleanup code</li>
+<li>objectify.DataElement didn't set up None value correctly</li>
+<li>objectify.DataElement didn't check the value against the provided type hints</li>
+<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id203">
+<h1>1.3 (2007-06-24)</h1>
+<div class="section" id="id204">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
+scheme that can access the entire tree in read-only mode to help determining
+a suitable Element class</li>
+<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
+<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
+<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
+adding processing instructions and comments around the root node</li>
+<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
+<li>Extended type annotation in objectify: cleaner annotation namespace setup
+plus new <tt class="docutils literal">deannotate()</tt> function</li>
+<li>Support for custom Element class instantiation in lxml.sax: passing a
+<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
+lookup context of that function</li>
+<li>'.' represents empty ObjectPath (identity)</li>
+<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
+<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
+keys/values/items for a libxml2 node</li>
+<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
+<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
+<li>Support for pickeling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
+<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
+<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
+a better handling of namespaces when moving elements between documents.</li>
+</ul>
+</div>
+<div class="section" id="id205">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them loose their namespace
+declarations</li>
+<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
+<li>Replacing the children slice of an Element would cut off the tails of the
+original children</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
+<li>API functions now check incoming strings for XML conformity. Zero bytes or
+low ASCII characters are no longer accepted (AssertionError).</li>
+<li>XSLT parsing failed to pass resolver context on to imported documents</li>
+<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
+<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
+<li>More ET compatible behaviour when writing out XML declarations or not</li>
+<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
+<li>Documents lost their top-level PIs and comments on serialisation</li>
+<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
+PIs are copied.</li>
+<li>Possible memory leaks in namespace handling when moving elements between
+documents</li>
+</ul>
+</div>
+<div class="section" id="id206">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>major restructuring in the documentation</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id207">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id208">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Build fixes for MS compiler</li>
+<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element["text"]</span></tt> failed</li>
+<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
+to access</li>
+<li>The pattern for attribute names in ObjectPath was too restrictive</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id209">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id210">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Rich comparison of QName objects</li>
+<li>Support for regular expressions in benchmark selection</li>
+<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
+<li>ElementInclude Python module for ElementTree compatible XInclude processing
+that honours custom resolvers registered with the source document</li>
+<li>ElementTree.parser property holds the parser used to parse the document</li>
+<li>setup.py has been refactored for greater readability and flexibility</li>
+<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
+runtime search paths has been renamed to --auto-rpath. This makes it
+possible to pass an --rpath directly to distutils; previously this was being
+shadowed.</li>
+</ul>
+</div>
+<div class="section" id="id211">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Element instantiation now uses locks to prevent race conditions with threads</li>
+<li>ElementTree.write() did not raise an exception when the file was not writable</li>
+<li>Error handling could crash under Python <= 2.4.1 - fixed by disabling thread
+support in these environments</li>
+<li>Element.find*() did not accept QName objects as path</li>
+</ul>
+</div>
+<div class="section" id="id212">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>code cleanup: redundant _NodeBase super class merged into _Element class
+Note: although the impact should be zero in most cases, this change breaks
+the compatibiliy of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id213">
+<h1>1.1.2 (2006-10-30)</h1>
+<div class="section" id="id214">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Data elements in objectify support repr(), which is now used by dump()</li>
+<li>Source distribution now ships with a patched Pyrex</li>
+<li>New C-API function makeElement() to create new elements with text,
+tail, attributes and namespaces</li>
+<li>Reuse original parser flags for XInclude</li>
+<li>Simplified support for handling XSLT processing instructions</li>
+</ul>
+</div>
+<div class="section" id="id215">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parser resources were not freed before the next parser run</li>
+<li>Open files and XML strings returned by Python resolvers were not
+closed/freed</li>
+<li>Crash in the IDDict returned by XMLDTDID</li>
+<li>Copying Comments and ProcessingInstructions failed</li>
+<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
+<li>Memory leak when garbage collecting tailed root elements</li>
+<li>HTML script/style content was not propagated to .text</li>
+<li>Show text xincluded between text nodes correctly in .text and .tail</li>
+<li>'integer * objectify.StringElement' operation was not supported</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id216">
+<h1>1.1.1 (2006-09-21)</h1>
+<div class="section" id="id217">
+<h2>Features added</h2>
+<ul class="simple">
+<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
+<li>countchildren() method on objectify.ObjectifiedElement</li>
+<li>Support custom elements for tree nodes in lxml.objectify</li>
+</ul>
+</div>
+<div class="section" id="id218">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>lxml.objectify failed to support long data values (e.g., "123L")</li>
+<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
+<li>Factories objectify.Element() and objectify.DataElement() were missing
+<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
+<li>Changing the default parser in lxml.objectify did not update the factories
+Element() and DataElement()</li>
+<li>Let lxml.objectify.Element() always generate tree elements (not data
+elements)</li>
+<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id219">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id220">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '<!-- coment -->' and
+'<?pi-target content?>' for repr()</li>
+<li>Parsers are now the preferred (and default) place where element class lookup
+schemes should be registered. Namespace lookup is no longer supported by
+default.</li>
+<li>Support for Python 2.5 beta</li>
+<li>Unlock the GIL for deep copying documents and for XPath()</li>
+<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
+<li>Support for parser options in iterparse()</li>
+<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
+tuples</li>
+<li>The XPath expression "/" now returns an empty list instead of raising an
+exception</li>
+<li>XML-Object API on top of lxml (lxml.objectify)</li>
+<li>Customizable Element class lookup:<ul>
+<li>different pre-implemented lookup mechanisms</li>
+<li>support for externally provided lookup functions</li>
+</ul>
+</li>
+<li>Support for processing instructions (ET-like, not compatible)</li>
+<li>Public C-level API for independent extension modules</li>
+<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
+<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
+documentation for differences)</li>
+<li>Element.nsmap property returns a mapping of all namespace prefixes known at
+the Element to their namespace URI</li>
+<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
+<li>Threading support in parsers and serializers:<ul>
+<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
+<li>File operations (on file names) free the GIL</li>
+<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
+<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
+</ul>
+</li>
+<li>Element iteration over XPath axes:<ul>
+<li>Element.iterdescendants() iterates over the descendants of an element</li>
+<li>Element.iterancestors() iterates over the ancestors of an element (from
+parent to parent)</li>
+<li>Element.itersiblings() iterates over either the following or preceding
+siblings of an element</li>
+<li>Element.iterchildren() iterates over the children of an element in either
+direction</li>
+<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
+generated elements</li>
+</ul>
+</li>
+<li>Element.getnext() and Element.getprevious() return the direct siblings of an
+element</li>
+</ul>
+</div>
+<div class="section" id="id221">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>filenames with local 8-bit encoding were not supported</li>
+<li>1.1beta did not compile under Python 2.3</li>
+<li>ignore unknown 'pyval' attribute values in objectify</li>
+<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
+<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
+<li>XPathSyntaxError now inherits from XPathError</li>
+<li>Threading race conditions in RelaxNG and XMLSchema</li>
+<li>Crash when mixing elements from XSLT results into other trees, concurrent
+XSLT is only allowed when the stylesheet was parsed in the main thread</li>
+<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
+differences in the regular expression syntax)</li>
+<li>Setting element.text to '' returned None on request, not the empty string</li>
+<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
+<li>Creating documents no longer copies the parser for later URL resolving. For
+performance reasons, only a reference is kept. Resolver updates on the
+parser will now be reflected by documents that were parsed before the
+change. Although this should rarely become visible, it is a behavioral
+change from 1.0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id222">
+<h1>1.0.4 (2006-09-09)</h1>
+<div class="section" id="id223">
+<h2>Features added</h2>
+<ul class="simple">
+<li>List-like <tt class="docutils literal">Element.extend()</tt> method</li>
+</ul>
+</div>
+<div class="section" id="id224">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in tail handling in <tt class="docutils literal">Element.replace()</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id225">
+<h1>1.0.3 (2006-08-08)</h1>
+<div class="section" id="id226">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Element.replace(old, new) method to replace a subelement by another one</li>
+</ul>
+</div>
+<div class="section" id="id227">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when mixing elements from XSLT results into other trees</li>
+<li>Copying/deepcopying did not work for ElementTree objects</li>
+<li>Setting an attribute to a non-string value did not raise an exception</li>
+<li>Element.remove() deleted the tail text from the removed Element</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id228">
+<h1>1.0.2 (2006-06-27)</h1>
+<div class="section" id="id229">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for setting a custom default Element class as opposed to namespace
+specific classes (which still override the default class)</li>
+</ul>
+</div>
+<div class="section" id="id230">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Rare exceptions in Python list functions were not handled</li>
+<li>Parsing accepted unicode strings with XML encoding declaration in certain
+cases</li>
+<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
+<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
+<li>XSLT and parser exception messages include the error line number</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id231">
+<h1>1.0.1 (2006-06-09)</h1>
+<div class="section" id="id232">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Repeated calls to Element.attrib now efficiently return the same instance</li>
+</ul>
+</div>
+<div class="section" id="id233">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Document deallocation could crash in certain garbage collection scenarios</li>
+<li>Extension function calls in XSLT variable declarations could break the
+stylesheet and crash on repeated calls</li>
+<li>Deep copying Elements could loose namespaces declared in parents</li>
+<li>Deep copying Elements did not copy tail</li>
+<li>Parsing file(-like) objects failed to load external entities</li>
+<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
+<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
+<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
+<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id234">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id235">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Element.getiterator() and the findall() methods support finding arbitrary
+elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
+<li>Another speedup in tree iteration code</li>
+<li>General speedup of Python Element object creation and deallocation</li>
+<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
+<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
+<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
+document that contains the element.</li>
+<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
+find the element in the tree structure</li>
+<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
+<li>Comment texts can be changed through the API</li>
+<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
+<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
+<li>ElementTree.write() no longer serializes in memory (reduced memory
+footprint)</li>
+<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
+<li>Support for writing the XML representation of Elements and ElementTrees to
+Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
+<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
+<li>Parsing a unicode string no longer copies the string (reduced memory
+footprint)</li>
+<li>Parsing file-like objects reads chunks rather than the whole file (reduced
+memory footprint)</li>
+<li>Parsing StringIO objects from the start avoids copying the string (reduced
+memory footprint)</li>
+<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
+information, original encoding and XML version as seen by the parser</li>
+<li>etree module can be compiled without libxslt by commenting out the line
+<tt class="docutils literal">include "xslt.pxi"</tt> near the end of the etree.pyx source file</li>
+<li>Better error messages in parser exceptions</li>
+<li>Error reporting also works in XSLT</li>
+<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
+resolvers are registered at parser level</li>
+<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
+enabled by default, can be switched off with 'regexp=False' keyword argument</li>
+<li>Support for exslt extensions (libexslt) and libxslt extra functions
+(node-set, document, write, output)</li>
+<li>Substantial speedup in XPath.evaluate()</li>
+<li>HTMLParser for parsing (broken) HTML</li>
+<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
+implementation of libxml2 (as opposed to ET compatible XMLID)</li>
+</ul>
+</div>
+<div class="section" id="id236">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in Element.__setitem__</li>
+<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
+<li>Memory leak in XPath extension functions</li>
+<li>Memory leak in unicode related setup code</li>
+<li>Element now raises ValueError on empty tag names</li>
+<li>Namespace fixing after moving elements between documents could fail if the
+source document was freed too early</li>
+<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -> 't')
+didn't reset the namespace</li>
+<li>Unknown constants from newer libxml2 versions could raise exceptions in the
+error handlers</li>
+<li>lxml.etree compiles much faster</li>
+<li>On libxml2 <= 2.6.22, parsing strings with encoding declaration could fail
+in certain cases</li>
+<li>Document reference in ElementTree objects was not updated when the root
+element was moved to a different document</li>
+<li>Running absolute XPath expressions on an Element now evaluates against the
+root tree</li>
+<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
+<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
+objects</li>
+<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
+<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
+<li>Memory leak when using iconv encoders in tostring/write</li>
+<li>Deep copying Elements and ElementTrees maintains the document information</li>
+<li>Serialization functions raise LookupError for unknown encodings</li>
+<li>Memory deallocation crash resulting from deep copying elements</li>
+<li>Some ElementTree methods could crash if the root node was not initialized
+(neither file nor element passed to the constructor)</li>
+<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
+dictionary</li>
+<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
+<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
+<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
+ElementTree root node as reference point</li>
+<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id237">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id238">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Speedup for Element.makeelement(): the new element reuses the original
+libxml2 document instead of creating a new empty one</li>
+<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
+<li>ElementTree compatible QName class</li>
+<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
+</ul>
+</div>
+<div class="section" id="id239">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
+<li>Memory leak if write_c14n fails to write the file after conversion</li>
+<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
+<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id240">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id241">
+<h2>Features added</h2>
+<ul class="simple">
+<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
+SaxError on mismatch</li>
+<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
+(startElement, endElement) and defaults to empty attributes (keyword
+argument)</li>
+<li>Speedup for repeatedly accessing element tag names</li>
+<li>Minor API performance improvements</li>
+</ul>
+</div>
+<div class="section" id="id242">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory deallocation bug when using XSLT output method "html"</li>
+<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
+<li>lxml.tests package will no longer be installed (is still in source tar)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id243">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id244">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging API for libxml2 error messages</li>
+<li>Various performance improvements</li>
+<li>Benchmark script for lxml, ElementTree and cElementTree</li>
+<li>Support for registering extension functions through new FunctionNamespace
+class (see doc/extensions.txt)</li>
+<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
+<li>Support for variables in XPath expressions (also in XPath class)</li>
+<li>XPath class for compiled XPath expressions</li>
+<li>XMLID module level function (ElementTree compatible)</li>
+<li>XMLParser API for customized libxml2 parser configuration</li>
+<li>Support for custom Element classes through new Namespace API (see
+doc/namespace_extensions.txt)</li>
+<li>Common exception base class LxmlError for module exceptions</li>
+<li>real iterator support in iter(Element), Element.getiterator()</li>
+<li>XSLT objects are callable, result trees support str()</li>
+<li>Added MANIFEST.in for easier creation of RPM files.</li>
+<li>'getparent' method on elements allows navigation to an element's
+parent element.</li>
+<li>Python core compatible SAX tree builder and SAX event generator. See
+doc/sax.txt for more information.</li>
+</ul>
+</div>
+<div class="section" id="id245">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Segfaults and memory leaks in various API functions of Element</li>
+<li>Segfault in XSLT.tostring()</li>
+<li>ElementTree objects no longer interfere, Elements can be root of different
+ElementTrees at the same time</li>
+<li>document('') works in XSLT documents read from files (in-memory documents
+cannot support this due to libxslt deficiencies)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id246">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id247">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
+does the same thing, and does <em>not</em> create a shallow copy, as that
+makes no sense in the context of libxml2 trees. This means a
+potential incompatibility with ElementTree, but there's more chance
+that it works than if copy.copy() isn't supported at all.</li>
+<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
+supported and parsing of gzipped XML files works.</li>
+<li>implemented index() on elements, allowing one to find the index of a
+SubElement.</li>
+</ul>
+</div>
+<div class="section" id="id248">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Use xslt-config instead of xml2-config to find out libxml2
+directories to take into account a case where libxslt is installed
+in a different directory than libxslt.</li>
+<li>Eliminate crash condition in iteration when text nodes are changed.</li>
+<li>Passing 'None' to tostring() does not result in a segfault anymore,
+but an AssertionError.</li>
+<li>Some test fixes for Windows.</li>
+<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
+syntax errors. This should be less confusing.</li>
+<li>Fixed error with uncaught exception in Pyrex code.</li>
+<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
+segfault.</li>
+<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
+<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
+libxml2 version, as it should.</li>
+<li>Passing a UTF-8 encoded string to the XML() function would fail;
+fixed.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id249">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id250">
+<h2>Features added</h2>
+<ul class="simple">
+<li>parameters (XPath expressions) can be passed to XSLT using keyword
+parameters.</li>
+<li>Simple XInclude support. Calling the xinclude() method on a tree
+will process any XInclude statements in the document.</li>
+<li>XMLSchema support. Use the XMLSchema class or the convenience
+xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
+<li>Added convenience xslt() method on tree. This is less efficient
+than the XSLT object, but makes it easier to write quick code.</li>
+<li>Added convenience relaxng() method on tree. This is less efficient
+than the RelaxNG object, but makes it easier to write quick code.</li>
+<li>Make it possible to use XPathEvaluator with elements as well. The
+XPathEvaluator in this case will retain the element so multiple
+XPath queries can be made against one element efficiently. This
+replaces the second argument to the .evaluate() method that existed
+previously.</li>
+<li>Allow registerNamespace() to be called on an XPathEvaluator, after
+creation, to add additional namespaces. Also allow registerNamespaces(),
+which does the same for a namespace dictionary.</li>
+<li>Add 'prefix' attribute to element to be able to read prefix information.
+This is entirely read-only.</li>
+<li>It is possible to supply an extra nsmap keyword parameter to
+the Element() and SubElement() constructors, which supplies a
+prefix to namespace URI mapping. This will create namespace
+prefix declarations on these elements and these prefixes will show up
+in XML serialization.</li>
+</ul>
+</div>
+<div class="section" id="id251">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Killed yet another memory management related bug: trees created
+using newDoc would not get a libxml2-level dictionary, which caused
+problems when deallocating these documents later if they contained a
+node that came from a document with a dictionary.</li>
+<li>Moving namespaced elements between documents was problematic as
+references to the original document would remain. This has been fixed
+by applying xmlReconciliateNs() after each move operation.</li>
+<li>Can pass None to 'dump()' without segfaults.</li>
+<li>tostring() works properly for non-root elements as well.</li>
+<li>Cleaned out the tostring() method so it should handle encoding
+correctly.</li>
+<li>Cleaned out the ElementTree.write() method so it should handle encoding
+correctly. Writing directly to a file should also be faster, as there is no
+need to go through a Python string in that case. Made sure the test cases
+test both serializing to StringIO as well as serializing to a real file.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id252">
+<h1>0.6 (2005-05-14)</h1>
+<div class="section" id="id253">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Changed setup.py so that library_dirs is also guessed. This should
+help with compilation on the Mac OS X platform, where otherwise the
+wrong library (shipping with the OS) could be picked up.</li>
+<li>Tweaked setup.py so that it picks up the version from version.txt.</li>
+</ul>
+</div>
+<div class="section" id="id254">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Do the right thing when handling namespaced attributes.</li>
+<li>fix bug where tostring() moved nodes into new documents. tostring()
+had very nasty side-effects before this fix, sorry!</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id255">
+<h1>0.5.1 (2005-04-09)</h1>
+<ul class="simple">
+<li>Python 2.2 compatibility fixes.</li>
+<li>unicode fixes in Element() and Comment() as well as XML(); unicode
+input wasn't properly being UTF-8 encoded.</li>
+</ul>
+</div>
+<div class="section" id="id256">
+<h1>0.5 (2005-04-08)</h1>
+<p>Initial public release.</p>
+</div>
+</div>
+<div class="footer">
+<hr class="footer" />
+Generated on: 2013-04-12.
+
+</div>
+</body>
+</html>
</head>
<body>
<div class="document" id="elementtree-compatibility-of-lxml-etree">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu current" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">ElementTree compatibility of lxml.etree</h1>
<p>A lot of care has been taken to ensure compatibility between etree and
ElementTree. Nonetheless, some differences and incompatibilities exist:</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="credits">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Credits</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu current" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Credits</h1>
<div class="section" id="main-contributors">
<h1>Main contributors</h1>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="lxml-cssselect">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.cssselect</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu current" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.cssselect</h1>
<p>lxml supports a number of interesting languages for tree traversal and element
selection. The most important is obviously <a class="reference external" href="xpathxslt.html#xpath">XPath</a>, but there is also
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="using-custom-element-classes-in-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Using custom Element classes in lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu current" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Using custom Element classes in lxml</h1>
<p>lxml has very sophisticated support for custom Element classes. You
can provide your own classes for Elements and have lxml use them by
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="beautifulsoup-parser">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">BeautifulSoup Parser</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu current" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">BeautifulSoup Parser</h1>
<p><a class="reference external" href="http://www.crummy.com/software/BeautifulSoup/">BeautifulSoup</a> is a Python package that parses broken HTML, just like
lxml supports it based on the parser of libxml2. BeautifulSoup uses a
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="python-extensions-for-xpath-and-xslt">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Python extensions for XPath and XSLT</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu current" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Python extensions for XPath and XSLT</h1>
<p>This document describes how to use Python extension functions in XPath
and XSLT like this:</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="html5lib-parser">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">html5lib Parser</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu current" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">html5lib Parser</h1>
<p><a class="reference external" href="http://code.google.com/p/html5lib/">html5lib</a> is a Python package that implements the HTML5 parsing algorithm
which is heavily influenced by current browsers and based on the <a class="reference external" href="http://www.whatwg.org/specs/web-apps/current-work/">WHATWG
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml - XML and HTML with Python</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu current" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml - XML and HTML with Python</h1>
<div class="pagequote line-block">
<div class="line"><a class="reference external" href="http://thread.gmane.org/gmane.comp.python.lxml.devel/3252/focus=3258">» lxml takes all the pain out of XML. «</a></div>
</div>
<div class="section" id="documentation">
<h1>Documentation</h1>
-<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-3.1.1.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-3.1.2.pdf">PDF
documentation</a>. The HTML documentation from this web site is part of
the normal <a class="reference external" href="#download">source download</a>.</p>
<ul class="simple">
that compiles on various platforms. The source distribution is signed
with <a class="reference external" href="pubkey.asc">this key</a>. Binary builds are not available from
PyPI due to the increased maintenance overhead.</p>
-<p>The latest version is <a class="reference external" href="/files/lxml-3.1.1.tgz">lxml 3.1.1</a>, released 2013-03-29
-(<a class="reference external" href="/changes-3.1.1.html">changes for 3.1.1</a>). <a class="reference external" href="#old-versions">Older versions</a>
+<p>The latest version is <a class="reference external" href="/files/lxml-3.1.2.tgz">lxml 3.1.2</a>, released 2013-04-12
+(<a class="reference external" href="/changes-3.1.2.html">changes for 3.1.2</a>). <a class="reference external" href="#old-versions">Older versions</a>
are listed below.</p>
<p>Please take a look at the
<a class="reference external" href="installation.html">installation instructions</a> !</p>
part of the source distribution, so if you want to download the
documentation for offline use, take the source archive and copy the
<tt class="docutils literal">doc/html</tt> directory out of the source tree, or use the
-<a class="reference external" href="lxmldoc-3.1.1.pdf">PDF documentation</a>.</p>
+<a class="reference external" href="lxmldoc-3.1.2.pdf">PDF documentation</a>.</p>
<p>The latest installable developer sources should usually be available from the
<a class="reference external" href="http://lxml.de/build/">build server</a>. It's also possible to check out
the latest development version of lxml from github directly, using a command
<pre class="literal-block">
hg clone git://github.com/lxml/lxml.git lxml
</pre>
+<p>Alternatively, if you use git, this should work as well:</p>
+<pre class="literal-block">
+git clone git://github.com/lxml/lxml.git lxml
+</pre>
<p>You can browse the <a class="reference external" href="https://github.com/lxml/lxml/">source repository</a> and its history through
the web. Please read <a class="reference external" href="build.html">how to build lxml from source</a>
first. The <a class="reference external" href="https://github.com/lxml/lxml/blob/master/CHANGES.txt">latest CHANGES</a> of the developer version are also
<a class="reference external" href="http://lxml.de/3.0/">3.0</a>
and the <a class="reference external" href="http://lxml.de/dev/">latest in-development version</a>.</p>
<ul class="simple">
+<li><a class="reference external" href="/files/lxml-3.1.1.tgz">lxml 3.1.1</a>, released 2013-03-29 (<a class="reference external" href="/changes-3.1.1.html">changes for 3.1.1</a>)</li>
<li><a class="reference external" href="/files/lxml-3.1.0.tgz">lxml 3.1.0</a>, released 2013-02-10 (<a class="reference external" href="/changes-3.1.0.html">changes for 3.1.0</a>)</li>
<li><a class="reference external" href="/files/lxml-3.1beta1.tgz">lxml 3.1beta1</a>, released 2012-12-21 (<a class="reference external" href="/changes-3.1beta1.html">changes for 3.1beta1</a>)</li>
<li><a class="reference external" href="/files/lxml-3.0.2.tgz">lxml 3.0.2</a>, released 2012-12-14 (<a class="reference external" href="/changes-3.0.2.html">changes for 3.0.2</a>)</li>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="installing-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Installing lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu current" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Installing lxml</h1>
<p>For special installation instructions regarding MS Windows and
MacOS-X, see the specific sections below.</p>
</div>
<div class="section" id="installation">
<h1>Installation</h1>
-<p>Unless you are on MS Windows, the best way to install lxml is to
-get the <a class="reference external" href="http://pypi.python.org/pypi/pip">pip</a> package management tool and run the following as
-super-user (or administrator):</p>
+<p>The best way to install lxml is to get the <a class="reference external" href="http://pypi.python.org/pypi/pip">pip</a> package management
+tool and run the following as super-user (or administrator):</p>
<pre class="literal-block">
pip install lxml
</pre>
manually and let pip install that, or pass the desired version
to pip:</p>
<pre class="literal-block">
-pip install lxml==2.3
+pip install lxml==3.1.2
</pre>
<ul>
-<li><p class="first">For <strong>MS Windows</strong>, we no longer provide binary distributions. Also
-see the related <a class="reference external" href="FAQ.html#where-are-the-binary-builds">FAQ entry</a>.
+<li><p class="first">For <strong>MS Windows</strong>, recent lxml releases feature community donated
+binary distributions, although you might still want to take a look
+at the related <a class="reference external" href="FAQ.html#where-are-the-binary-builds">FAQ entry</a>.
If you fail to build lxml on your MS Windows system from the signed
-and tested sources that we release, consider using the <a class="reference external" href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml">unofficial
-Windows binaries</a>
+and tested sources that we release, consider using the binary builds
+from PyPI or the <a class="reference external" href="http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml">unofficial Windows binaries</a>
that Christoph Gohlke generously provides.</p>
</li>
<li><p class="first">On <strong>Linux</strong> (and most other well-behaved operating systems),
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="why-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Why lxml?</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu current" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Why lxml?</h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="how-to-read-the-source-of-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">How to read the source of lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu current" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">How to read the source of lxml</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="lxml-html">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.html</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu current" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.html</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="lxml-objectify">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.objectify</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu current" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">lxml.objectify</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="parsing-xml-and-html-with-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Parsing XML and HTML with lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu current" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Parsing XML and HTML with lxml</h1>
<p>lxml provides a very simple and powerful API for parsing XML and HTML. It
supports one-step parsing as well as step-by-step parsing using an
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="benchmarks-and-speed">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Benchmarks and Speed</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu current" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Benchmarks and Speed</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
very easy to add as tiny test methods, so if you write a performance test for
a specific part of the API yourself, please consider sending it to the lxml
mailing list.</p>
-<p>The timings cited below compare lxml 2.3 (with libxml2 2.7.6) to the
-latest developer versions of ElementTree (1.3beta2) and cElementTree
-(1.0.6a3). They were run single-threaded on a 2.5GHz 64bit Intel Core
-Duo machine under Ubuntu Linux 9.10 (Karmic). The C libraries were
-compiled with the same platform specific optimisation flags. The
-Python interpreter (2.6.4) was also manually compiled for the
-platform. Note that many of the following ElementTree timings are
-therefore better then what a normal Python installation with the
-standard library (c)ElementTree modules would yield.</p>
+<p>The timings presented below compare lxml 3.1.1 (with libxml2 2.9.0) to the
+latest released versions of ElementTree (with cElementTree as accelerator
+module) in the standard library of CPython 3.3.0. They were run
+single-threaded on a 2.9GHz 64bit double core Intel i7 machine under
+Ubuntu Linux 12.10 (Quantal). The C libraries were compiled with the
+same platform specific optimisation flags. The Python interpreter was
+also manually compiled for the platform. Note that many of the following
+ElementTree timings are therefore better than what a normal Python
+installation with the standard library (c)ElementTree modules would yield.
+Note also that CPython 2.7 and 3.2+ come with a newer ElementTree version,
+so older Python installations will not perform as good for (c)ElementTree,
+and sometimes substantially worse.</p>
<p>The scripts run a number of simple tests on the different libraries, using
different XML tree configurations: different tree sizes (T1-4), with or
without attributes (-/A), with or without ASCII string or unicode text
executes entirely at the C level, without any interaction with Python
code. The results are rather impressive, especially for UTF-8, which
is native to libxml2. While 20 to 40 times faster than (c)ElementTree
-1.2 (which is part of the standard library since Python 2.5), lxml is
-still more than 7 times as fast as the much improved ElementTree 1.3:</p>
+1.2 (which was part of the standard library before Python 2.7/3.2),
+lxml is still more than 10 times as fast as the much improved
+ElementTree 1.3 in recent Python versions:</p>
<pre class="literal-block">
-lxe: tostring_utf16 (S-TR T1) 9.8219 msec/pass
-cET: tostring_utf16 (S-TR T1) 88.7740 msec/pass
-ET : tostring_utf16 (S-TR T1) 99.6690 msec/pass
+lxe: tostring_utf16 (S-TR T1) 7.9958 msec/pass
+cET: tostring_utf16 (S-TR T1) 83.1358 msec/pass
-lxe: tostring_utf16 (UATR T1) 10.3750 msec/pass
-cET: tostring_utf16 (UATR T1) 90.7581 msec/pass
-ET : tostring_utf16 (UATR T1) 102.3569 msec/pass
+lxe: tostring_utf16 (UATR T1) 8.3222 msec/pass
+cET: tostring_utf16 (UATR T1) 84.4688 msec/pass
-lxe: tostring_utf16 (S-TR T2) 10.2711 msec/pass
-cET: tostring_utf16 (S-TR T2) 93.5340 msec/pass
-ET : tostring_utf16 (S-TR T2) 105.8500 msec/pass
+lxe: tostring_utf16 (S-TR T2) 8.2297 msec/pass
+cET: tostring_utf16 (S-TR T2) 87.3415 msec/pass
-lxe: tostring_utf8 (S-TR T2) 7.1261 msec/pass
-cET: tostring_utf8 (S-TR T2) 93.4091 msec/pass
-ET : tostring_utf8 (S-TR T2) 105.5419 msec/pass
+lxe: tostring_utf8 (S-TR T2) 6.5677 msec/pass
+cET: tostring_utf8 (S-TR T2) 76.2064 msec/pass
-lxe: tostring_utf8 (U-TR T3) 1.4591 msec/pass
-cET: tostring_utf8 (U-TR T3) 29.6180 msec/pass
-ET : tostring_utf8 (U-TR T3) 31.9080 msec/pass
+lxe: tostring_utf8 (U-TR T3) 1.1952 msec/pass
+cET: tostring_utf8 (U-TR T3) 22.0058 msec/pass
</pre>
-<p>The same applies to plain text serialisation. Note that the
-cElementTree version in the standard library does not currently
-support this, as it is a new feature in ET 1.3 and lxml.etree 2.0:</p>
+<p>The difference is somewhat smaller for plain text serialisation:</p>
<pre class="literal-block">
-lxe: tostring_text_ascii (S-TR T1) 1.9400 msec/pass
-cET: tostring_text_ascii (S-TR T1) 41.6231 msec/pass
-ET : tostring_text_ascii (S-TR T1) 52.7501 msec/pass
+lxe: tostring_text_ascii (S-TR T1) 2.7738 msec/pass
+cET: tostring_text_ascii (S-TR T1) 4.7629 msec/pass
-lxe: tostring_text_ascii (S-TR T3) 0.5331 msec/pass
-cET: tostring_text_ascii (S-TR T3) 12.9712 msec/pass
-ET : tostring_text_ascii (S-TR T3) 15.3620 msec/pass
+lxe: tostring_text_ascii (S-TR T3) 0.8273 msec/pass
+cET: tostring_text_ascii (S-TR T3) 1.5273 msec/pass
-lxe: tostring_text_utf16 (S-TR T1) 3.2430 msec/pass
-cET: tostring_text_utf16 (S-TR T1) 41.9259 msec/pass
-ET : tostring_text_utf16 (S-TR T1) 53.4091 msec/pass
+lxe: tostring_text_utf16 (S-TR T1) 2.7659 msec/pass
+cET: tostring_text_utf16 (S-TR T1) 10.5038 msec/pass
-lxe: tostring_text_utf16 (U-TR T1) 3.6838 msec/pass
-cET: tostring_text_utf16 (U-TR T1) 38.7859 msec/pass
-ET : tostring_text_utf16 (U-TR T1) 50.8440 msec/pass
+lxe: tostring_text_utf16 (U-TR T1) 2.8017 msec/pass
+cET: tostring_text_utf16 (U-TR T1) 10.5207 msec/pass
</pre>
-<p>Unlike ElementTree, the <tt class="docutils literal">tostring()</tt> function in lxml also supports
-serialisation to a Python unicode string object:</p>
+<p>The <tt class="docutils literal">tostring()</tt> function also supports serialisation to a Python
+unicode string object, which is currently faster in ElementTree
+under CPython 3.3:</p>
<pre class="literal-block">
-lxe: tostring_text_unicode (S-TR T1) 2.4869 msec/pass
-lxe: tostring_text_unicode (U-TR T1) 3.0370 msec/pass
-lxe: tostring_text_unicode (S-TR T3) 0.6518 msec/pass
-lxe: tostring_text_unicode (U-TR T3) 0.7300 msec/pass
+lxe: tostring_text_unicode (S-TR T1) 2.6896 msec/pass
+cET: tostring_text_unicode (S-TR T1) 1.0056 msec/pass
+
+lxe: tostring_text_unicode (U-TR T1) 2.7366 msec/pass
+cET: tostring_text_unicode (U-TR T1) 1.0154 msec/pass
+
+lxe: tostring_text_unicode (S-TR T3) 0.7997 msec/pass
+cET: tostring_text_unicode (S-TR T3) 0.3154 msec/pass
+
+lxe: tostring_text_unicode (U-TR T4) 0.0048 msec/pass
+cET: tostring_text_unicode (U-TR T4) 0.0160 msec/pass
</pre>
<p>For parsing, lxml.etree and cElementTree compete for the medal.
Depending on the input, either of the two can be faster. The (c)ET
known to be very fast. Here are some timings from the benchmarking
suite:</p>
<pre class="literal-block">
-lxe: parse_stringIO (SAXR T1) 19.9990 msec/pass
-cET: parse_stringIO (SAXR T1) 8.4970 msec/pass
-ET : parse_stringIO (SAXR T1) 183.9781 msec/pass
+lxe: parse_bytesIO (SAXR T1) 13.0246 msec/pass
+cET: parse_bytesIO (SAXR T1) 8.2929 msec/pass
-lxe: parse_stringIO (S-XR T3) 2.0790 msec/pass
-cET: parse_stringIO (S-XR T3) 2.7430 msec/pass
-ET : parse_stringIO (S-XR T3) 47.4229 msec/pass
+lxe: parse_bytesIO (S-XR T3) 1.3542 msec/pass
+cET: parse_bytesIO (S-XR T3) 2.4023 msec/pass
-lxe: parse_stringIO (UAXR T3) 11.1630 msec/pass
-cET: parse_stringIO (UAXR T3) 15.0940 msec/pass
-ET : parse_stringIO (UAXR T3) 92.6890 msec/pass
+lxe: parse_bytesIO (UAXR T3) 7.5610 msec/pass
+cET: parse_bytesIO (UAXR T3) 11.2455 msec/pass
</pre>
<p>And another couple of timings <a class="reference external" href="http://svn.effbot.org/public/elementtree-1.3/benchmark.py">from a benchmark</a> that Fredrik Lundh
<a class="reference external" href="http://effbot.org/zone/celementtree.htm#benchmarks">used to promote cElementTree</a>, comparing a number of different
parsers. First, parsing a 274KB XML file containing Shakespeare's
Hamlet:</p>
<pre class="literal-block">
-lxml.etree.parse done in 0.005 seconds
-cElementTree.parse done in 0.012 seconds
-elementtree.ElementTree.parse done in 0.136 seconds
-elementtree.XMLTreeBuilder: 6636 nodes read in 0.243 seconds
-elementtree.SimpleXMLTreeBuilder: 6636 nodes read in 0.314 seconds
-elementtree.SgmlopXMLTreeBuilder: 6636 nodes read in 0.104 seconds
-minidom tree read in 0.137 seconds
+xml.etree.ElementTree.parse done in 0.017 seconds
+xml.etree.cElementTree.parse done in 0.007 seconds
+xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
+lxml.etree.parse done in 0.003 seconds
+drop_whitespace.parse done in 0.003 seconds
+lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
+minidom tree read in 0.080 seconds
</pre>
<p>And a 3.4MB XML file containing the Old Testament:</p>
<pre class="literal-block">
-lxml.etree.parse done in 0.031 seconds
-cElementTree.parse done in 0.039 seconds
-elementtree.ElementTree.parse done in 0.537 seconds
-elementtree.XMLTreeBuilder: 25317 nodes read in 0.577 seconds
-elementtree.SimpleXMLTreeBuilder: 25317 nodes read in 1.265 seconds
-elementtree.SgmlopXMLTreeBuilder: 25317 nodes read in 0.331 seconds
-minidom tree read in 0.643 seconds
+xml.etree.ElementTree.parse done in 0.038 seconds
+xml.etree.cElementTree.parse done in 0.030 seconds
+xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
+lxml.etree.parse done in 0.016 seconds
+drop_whitespace.parse done in 0.015 seconds
+lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
+minidom tree read in 0.288 seconds
</pre>
-<p>Here are the same benchmarks run under an early alpha of CPython 3.3,
-but on a different machine, which makes the absolute numbers
-uncomparable. This time, however, we include the memory usage of the
-process in KB before and after parsing (using os.fork() to make sure
-we start from a clean state each time). For the 274KB hamlet.xml
-file:</p>
+<p>Here are the same benchmarks again, but including the memory usage
+of the process in KB before and after parsing (using os.fork() to
+make sure we start from a clean state each time). For the 274KB
+hamlet.xml file:</p>
<pre class="literal-block">
-Memory usage at start: 7288
-xml.etree.ElementTree.parse done in 0.104 seconds
-Memory usage: 14252 (+6964)
-xml.etree.cElementTree.parse done in 0.016 seconds
-Memory usage: 9748 (+2460)
-lxml.etree.parse done in 0.017 seconds
-Memory usage: 11040 (+3752)
-lxml.etree[remove_blank_space].parse done in 0.015 seconds
-Memory usage: 10088 (+2800)
-minidom tree read in 0.152 seconds
-Memory usage: 30376 (+23088)
+Memory usage: 7284
+xml.etree.ElementTree.parse done in 0.017 seconds
+Memory usage: 9432 (+2148)
+xml.etree.cElementTree.parse done in 0.007 seconds
+Memory usage: 9432 (+2152)
+xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
+Memory usage: 9448 (+2164)
+lxml.etree.parse done in 0.003 seconds
+Memory usage: 11032 (+3748)
+drop_whitespace.parse done in 0.003 seconds
+Memory usage: 10224 (+2940)
+lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
+Memory usage: 11804 (+4520)
+minidom tree read in 0.080 seconds
+Memory usage: 12324 (+5040)
</pre>
<p>And for the 3.4MB Old Testament XML file:</p>
<pre class="literal-block">
-Memory usage at start: 20456
-xml.etree.ElementTree.parse done in 0.419 seconds
-Memory usage: 46112 (+25656)
-xml.etree.cElementTree.parse done in 0.054 seconds
-Memory usage: 32644 (+12188)
-lxml.etree.parse done in 0.041 seconds
-Memory usage: 37508 (+17052)
-lxml.etree[remove_blank_space].parse done in 0.037 seconds
-Memory usage: 34356 (+13900)
-minidom tree read in 0.671 seconds
-Memory usage: 110448 (+89992)
+Memory usage: 10420
+xml.etree.ElementTree.parse done in 0.038 seconds
+Memory usage: 20660 (+10240)
+xml.etree.cElementTree.parse done in 0.030 seconds
+Memory usage: 20660 (+10240)
+xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
+Memory usage: 20844 (+10424)
+lxml.etree.parse done in 0.016 seconds
+Memory usage: 27624 (+17204)
+drop_whitespace.parse done in 0.015 seconds
+Memory usage: 24468 (+14052)
+lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
+Memory usage: 29844 (+19424)
+minidom tree read in 0.288 seconds
+Memory usage: 28788 (+18368)
</pre>
<p>As can be seen from the sizes, both lxml.etree and cElementTree are
rather memory friendly compared to the pure Python libraries
-ElementTree and (especially) minidom. And the timings speak for
-themselves anyway.</p>
+ElementTree and (especially) minidom. Comparing to older CPython
+versions, the memory footprint of the minidom library was considerably
+reduced in CPython 3.3, by about a factor of 4 in this case.</p>
<p>For plain parser performance, lxml.etree and cElementTree tend to stay
rather close to each other, usually within a factor of two, with
winners well distributed over both sides. Similar timings can be
observed for the <tt class="docutils literal">iterparse()</tt> function:</p>
<pre class="literal-block">
-lxe: iterparse_stringIO (SAXR T1) 24.8621 msec/pass
-cET: iterparse_stringIO (SAXR T1) 17.3280 msec/pass
-ET : iterparse_stringIO (SAXR T1) 199.1270 msec/pass
+lxe: iterparse_bytesIO (SAXR T1) 17.9198 msec/pass
+cET: iterparse_bytesIO (SAXR T1) 14.4982 msec/pass
-lxe: iterparse_stringIO (UAXR T3) 12.3630 msec/pass
-cET: iterparse_stringIO (UAXR T3) 17.5190 msec/pass
-ET : iterparse_stringIO (UAXR T3) 95.8610 msec/pass
+lxe: iterparse_bytesIO (UAXR T3) 8.8522 msec/pass
+cET: iterparse_bytesIO (UAXR T3) 12.9857 msec/pass
</pre>
<p>However, if you benchmark the complete round-trip of a serialise-parse
cycle, the numbers will look similar to these:</p>
<pre class="literal-block">
-lxe: write_utf8_parse_stringIO (S-TR T1) 27.5791 msec/pass
-cET: write_utf8_parse_stringIO (S-TR T1) 158.9060 msec/pass
-ET : write_utf8_parse_stringIO (S-TR T1) 347.8320 msec/pass
+lxe: write_utf8_parse_bytesIO (S-TR T1) 19.8867 msec/pass
+cET: write_utf8_parse_bytesIO (S-TR T1) 80.7259 msec/pass
-lxe: write_utf8_parse_stringIO (UATR T2) 34.4141 msec/pass
-cET: write_utf8_parse_stringIO (UATR T2) 187.7041 msec/pass
-ET : write_utf8_parse_stringIO (UATR T2) 388.9449 msec/pass
+lxe: write_utf8_parse_bytesIO (UATR T2) 23.7896 msec/pass
+cET: write_utf8_parse_bytesIO (UATR T2) 98.0766 msec/pass
-lxe: write_utf8_parse_stringIO (S-TR T3) 3.7861 msec/pass
-cET: write_utf8_parse_stringIO (S-TR T3) 52.4600 msec/pass
-ET : write_utf8_parse_stringIO (S-TR T3) 101.4550 msec/pass
+lxe: write_utf8_parse_bytesIO (S-TR T3) 3.0684 msec/pass
+cET: write_utf8_parse_bytesIO (S-TR T3) 24.6122 msec/pass
-lxe: write_utf8_parse_stringIO (SATR T4) 0.5522 msec/pass
-cET: write_utf8_parse_stringIO (SATR T4) 3.8941 msec/pass
-ET : write_utf8_parse_stringIO (SATR T4) 5.9431 msec/pass
+lxe: write_utf8_parse_bytesIO (SATR T4) 0.3495 msec/pass
+cET: write_utf8_parse_bytesIO (SATR T4) 1.9610 msec/pass
</pre>
<p>For applications that require a high parser throughput of large files,
and that do little to no serialization, both cET and lxml.etree are a
benchmark (given in seconds):</p>
<pre class="literal-block">
lxe: -- S- U- -A SA UA
- T1: 0.0407 0.0470 0.0506 0.0396 0.0464 0.0504
- T2: 0.0480 0.0557 0.0584 0.0520 0.0608 0.0627
- T3: 0.0118 0.0132 0.0136 0.0319 0.0322 0.0319
- T4: 0.0002 0.0002 0.0002 0.0006 0.0006 0.0006
+ T1: 0.0299 0.0343 0.0344 0.0293 0.0345 0.0342
+ T2: 0.0368 0.0423 0.0418 0.0427 0.0474 0.0459
+ T3: 0.0088 0.0084 0.0086 0.0251 0.0258 0.0261
+ T4: 0.0002 0.0002 0.0002 0.0005 0.0006 0.0006
cET: -- S- U- -A SA UA
- T1: 0.0045 0.0043 0.0043 0.0045 0.0043 0.0043
- T2: 0.0068 0.0069 0.0066 0.0078 0.0070 0.0069
- T3: 0.0040 0.0040 0.0040 0.0050 0.0052 0.0067
- T4: 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001
-ET : -- S- U- -A SA UA
- T1: 0.0479 0.1051 0.1279 0.0487 0.1597 0.0484
- T2: 0.1995 0.0553 0.2297 0.2550 0.0550 0.2881
- T3: 0.0177 0.0169 0.0174 0.0185 0.2895 0.0189
- T4: 0.0003 0.0002 0.0003 0.0003 0.0014 0.0003
+ T1: 0.0050 0.0045 0.0093 0.0044 0.0043 0.0043
+ T2: 0.0073 0.0075 0.0074 0.0201 0.0075 0.0074
+ T3: 0.0033 0.0213 0.0032 0.0034 0.0033 0.0035
+ T4: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
</pre>
-<p>While lxml is still a lot faster than ET in most cases, cET can be
-several times faster than lxml here. One of the reasons is that lxml
-must encode incoming string data and tag names into UTF-8, and
-additionally discard the created Python elements after their use, when
-they are no longer referenced. ET and cET represent the tree itself
-through these objects, which reduces the overhead in creating them.</p>
+<p>The timings are somewhat close to each other, although cET can be
+several times faster than lxml for larger trees. One of the
+reasons is that lxml must encode incoming string data and tag names
+into UTF-8, and additionally discard the created Python elements
+after their use, when they are no longer referenced. ElementTree
+represents the tree itself through these objects, which reduces
+the overhead in creating them.</p>
<div class="section" id="child-access">
<h2>Child access</h2>
-<p>The same reason makes operations like collecting children as in
-<tt class="docutils literal">list(element)</tt> more costly in lxml. Where ET and cET can quickly
-create a shallow copy of their list of children, lxml has to create a
-Python object for each child and collect them in a list:</p>
+<p>The same tree overhead makes operations like collecting children as in
+<tt class="docutils literal">list(element)</tt> more costly in lxml. Where cET can quickly create
+a shallow copy of their list of children, lxml has to create a Python
+object for each child and collect them in a list:</p>
<pre class="literal-block">
-lxe: root_list_children (--TR T1) 0.0079 msec/pass
-cET: root_list_children (--TR T1) 0.0029 msec/pass
-ET : root_list_children (--TR T1) 0.0100 msec/pass
+lxe: root_list_children (--TR T1) 0.0038 msec/pass
+cET: root_list_children (--TR T1) 0.0010 msec/pass
-lxe: root_list_children (--TR T2) 0.0849 msec/pass
-cET: root_list_children (--TR T2) 0.0110 msec/pass
-ET : root_list_children (--TR T2) 0.1481 msec/pass
+lxe: root_list_children (--TR T2) 0.0455 msec/pass
+cET: root_list_children (--TR T2) 0.0050 msec/pass
</pre>
<p>This handicap is also visible when accessing single children:</p>
<pre class="literal-block">
-lxe: first_child (--TR T2) 0.0699 msec/pass
-cET: first_child (--TR T2) 0.0608 msec/pass
-ET : first_child (--TR T2) 0.3419 msec/pass
+lxe: first_child (--TR T2) 0.0424 msec/pass
+cET: first_child (--TR T2) 0.0384 msec/pass
-lxe: last_child (--TR T1) 0.0710 msec/pass
-cET: last_child (--TR T1) 0.0648 msec/pass
-ET : last_child (--TR T1) 0.3309 msec/pass
+lxe: last_child (--TR T1) 0.0477 msec/pass
+cET: last_child (--TR T1) 0.0467 msec/pass
</pre>
<p>... unless you also add the time to find a child index in a bigger
list. ET and cET use Python lists here, which are based on arrays.
The data structure used by libxml2 is a linked tree, and thus, a
linked list of children:</p>
<pre class="literal-block">
-lxe: middle_child (--TR T1) 0.0989 msec/pass
-cET: middle_child (--TR T1) 0.0598 msec/pass
-ET : middle_child (--TR T1) 0.3390 msec/pass
+lxe: middle_child (--TR T1) 0.0710 msec/pass
+cET: middle_child (--TR T1) 0.0420 msec/pass
-lxe: middle_child (--TR T2) 2.7599 msec/pass
-cET: middle_child (--TR T2) 0.0620 msec/pass
-ET : middle_child (--TR T2) 0.3610 msec/pass
+lxe: middle_child (--TR T2) 1.7393 msec/pass
+cET: middle_child (--TR T2) 0.0396 msec/pass
</pre>
</div>
<div class="section" id="element-creation">
in. This results in a major performance difference for creating independent
Elements that end up in independently created documents:</p>
<pre class="literal-block">
-lxe: create_elements (--TC T2) 1.1640 msec/pass
-cET: create_elements (--TC T2) 0.0808 msec/pass
-ET : create_elements (--TC T2) 0.5801 msec/pass
+lxe: create_elements (--TC T2) 1.0045 msec/pass
+cET: create_elements (--TC T2) 0.0753 msec/pass
</pre>
<p>Therefore, it is always preferable to create Elements for the document they
are supposed to end up in, either as SubElements of an Element or using the
explicit <tt class="docutils literal">Element.makeelement()</tt> call:</p>
<pre class="literal-block">
-lxe: makeelement (--TC T2) 1.2751 msec/pass
-cET: makeelement (--TC T2) 0.1469 msec/pass
-ET : makeelement (--TC T2) 0.7451 msec/pass
+lxe: makeelement (--TC T2) 1.0586 msec/pass
+cET: makeelement (--TC T2) 0.1483 msec/pass
-lxe: create_subelements (--TC T2) 1.1470 msec/pass
-cET: create_subelements (--TC T2) 0.1080 msec/pass
-ET : create_subelements (--TC T2) 1.4369 msec/pass
+lxe: create_subelements (--TC T2) 0.8826 msec/pass
+cET: create_subelements (--TC T2) 0.0827 msec/pass
</pre>
<p>So, if the main performance bottleneck of an application is creating large XML
trees in memory through calls to Element and SubElement, cET is the best
<p>The following benchmark appends all root children of the second tree to the
root of the first tree:</p>
<pre class="literal-block">
-lxe: append_from_document (--TR T1,T2) 2.0740 msec/pass
-cET: append_from_document (--TR T1,T2) 0.1271 msec/pass
-ET : append_from_document (--TR T1,T2) 0.4020 msec/pass
+lxe: append_from_document (--TR T1,T2) 1.0812 msec/pass
+cET: append_from_document (--TR T1,T2) 0.1104 msec/pass
-lxe: append_from_document (--TR T3,T4) 0.0229 msec/pass
-cET: append_from_document (--TR T3,T4) 0.0088 msec/pass
-ET : append_from_document (--TR T3,T4) 0.0291 msec/pass
+lxe: append_from_document (--TR T3,T4) 0.0155 msec/pass
+cET: append_from_document (--TR T3,T4) 0.0060 msec/pass
</pre>
<p>Although these are fairly small numbers compared to parsing, this easily shows
the different performance classes for lxml and (c)ET. Where the latter do not
<p>This difference is not always as visible, but applies to most parts of the
API, like inserting newly created elements:</p>
<pre class="literal-block">
-lxe: insert_from_document (--TR T1,T2) 7.2598 msec/pass
-cET: insert_from_document (--TR T1,T2) 0.1578 msec/pass
-ET : insert_from_document (--TR T1,T2) 0.5150 msec/pass
+lxe: insert_from_document (--TR T1,T2) 3.9763 msec/pass
+cET: insert_from_document (--TR T1,T2) 0.1459 msec/pass
</pre>
<p>or replacing the child slice by a newly created element:</p>
<pre class="literal-block">
-lxe: replace_children_element (--TC T1) 0.1149 msec/pass
-cET: replace_children_element (--TC T1) 0.0110 msec/pass
-ET : replace_children_element (--TC T1) 0.0558 msec/pass
+lxe: replace_children_element (--TC T1) 0.0749 msec/pass
+cET: replace_children_element (--TC T1) 0.0081 msec/pass
</pre>
<p>as opposed to replacing the slice with an existing element from the
same document:</p>
<pre class="literal-block">
-lxe: replace_children (--TC T1) 0.0091 msec/pass
-cET: replace_children (--TC T1) 0.0060 msec/pass
-ET : replace_children (--TC T1) 0.0188 msec/pass
+lxe: replace_children (--TC T1) 0.0052 msec/pass
+cET: replace_children (--TC T1) 0.0036 msec/pass
</pre>
<p>While these numbers are too small to provide a major performance
impact in practice, you should keep this difference in mind when you
-merge very large trees.</p>
+merge very large trees. Note that Elements have a <tt class="docutils literal">makeelement()</tt>
+method that allows to create an Element within the same document,
+thus avoiding the merge overhead when inserting it into that tree.</p>
</div>
<div class="section" id="deepcopy">
<h2>deepcopy</h2>
<p>Deep copying a tree is fast in lxml:</p>
<pre class="literal-block">
-lxe: deepcopy_all (--TR T1) 5.0900 msec/pass
-cET: deepcopy_all (--TR T1) 57.9181 msec/pass
-ET : deepcopy_all (--TR T1) 499.1000 msec/pass
+lxe: deepcopy_all (--TR T1) 3.1650 msec/pass
+cET: deepcopy_all (--TR T1) 53.9973 msec/pass
-lxe: deepcopy_all (-ATR T2) 6.3980 msec/pass
-cET: deepcopy_all (-ATR T2) 65.6390 msec/pass
-ET : deepcopy_all (-ATR T2) 526.5379 msec/pass
+lxe: deepcopy_all (-ATR T2) 3.7365 msec/pass
+cET: deepcopy_all (-ATR T2) 61.6267 msec/pass
-lxe: deepcopy_all (S-TR T3) 1.4491 msec/pass
-cET: deepcopy_all (S-TR T3) 14.7018 msec/pass
-ET : deepcopy_all (S-TR T3) 123.5120 msec/pass
+lxe: deepcopy_all (S-TR T3) 0.7913 msec/pass
+cET: deepcopy_all (S-TR T3) 13.6220 msec/pass
</pre>
<p>So, for example, if you have a database-like scenario where you parse in a
large tree and then search and copy independent subtrees from it for further
</div>
<div class="section" id="tree-traversal">
<h2>Tree traversal</h2>
-<p>Another area where lxml is very fast is iteration for tree traversal. If your
-algorithms can benefit from step-by-step traversal of the XML tree and
-especially if few elements are of interest or the target element tag name is
-known, lxml is a good choice:</p>
+<p>Another important area in XML processing is iteration for tree
+traversal. If your algorithms can benefit from step-by-step
+traversal of the XML tree and especially if few elements are of
+interest or the target element tag name is known, the <tt class="docutils literal">.iter()</tt>
+method is a good choice:</p>
<pre class="literal-block">
-lxe: getiterator_all (--TR T1) 1.6890 msec/pass
-cET: getiterator_all (--TR T1) 23.8621 msec/pass
-ET : getiterator_all (--TR T1) 11.1070 msec/pass
+lxe: iter_all (--TR T1) 1.0529 msec/pass
+cET: iter_all (--TR T1) 0.2635 msec/pass
-lxe: getiterator_islice (--TR T2) 0.0188 msec/pass
-cET: getiterator_islice (--TR T2) 0.1841 msec/pass
-ET : getiterator_islice (--TR T2) 11.7059 msec/pass
+lxe: iter_islice (--TR T2) 0.0110 msec/pass
+cET: iter_islice (--TR T2) 0.0050 msec/pass
-lxe: getiterator_tag (--TR T2) 0.0119 msec/pass
-cET: getiterator_tag (--TR T2) 0.3560 msec/pass
-ET : getiterator_tag (--TR T2) 10.6668 msec/pass
+lxe: iter_tag (--TR T2) 0.0079 msec/pass
+cET: iter_tag (--TR T2) 0.0112 msec/pass
-lxe: getiterator_tag_all (--TR T2) 0.2429 msec/pass
-cET: getiterator_tag_all (--TR T2) 20.3710 msec/pass
-ET : getiterator_tag_all (--TR T2) 10.6280 msec/pass
+lxe: iter_tag_all (--TR T2) 0.1822 msec/pass
+cET: iter_tag_all (--TR T2) 0.5343 msec/pass
</pre>
<p>This translates directly into similar timings for <tt class="docutils literal">Element.findall()</tt>:</p>
<pre class="literal-block">
-lxe: findall (--TR T2) 2.4588 msec/pass
-cET: findall (--TR T2) 24.1358 msec/pass
-ET : findall (--TR T2) 13.0949 msec/pass
+lxe: findall (--TR T2) 1.7176 msec/pass
+cET: findall (--TR T2) 0.9973 msec/pass
-lxe: findall (--TR T3) 0.5939 msec/pass
-cET: findall (--TR T3) 6.9802 msec/pass
-ET : findall (--TR T3) 3.8991 msec/pass
+lxe: findall (--TR T3) 0.3967 msec/pass
+cET: findall (--TR T3) 0.2525 msec/pass
-lxe: findall_tag (--TR T2) 0.2789 msec/pass
-cET: findall_tag (--TR T2) 20.5719 msec/pass
-ET : findall_tag (--TR T2) 10.8678 msec/pass
+lxe: findall_tag (--TR T2) 0.2258 msec/pass
+cET: findall_tag (--TR T2) 0.5770 msec/pass
-lxe: findall_tag (--TR T3) 0.1638 msec/pass
-cET: findall_tag (--TR T3) 5.0790 msec/pass
-ET : findall_tag (--TR T3) 2.5120 msec/pass
+lxe: findall_tag (--TR T3) 0.1085 msec/pass
+cET: findall_tag (--TR T3) 0.1919 msec/pass
</pre>
<p>Note that all three libraries currently use the same Python
implementation for <tt class="docutils literal">.findall()</tt>, except for their native tree
-iterator (<tt class="docutils literal">element.iter()</tt>).</p>
+iterator (<tt class="docutils literal">element.iter()</tt>). In general, lxml is very fast
+for iteration, but looses ground against cET when many Elements
+are found and need to be instantiated. So, the more selective
+your search is, the faster lxml will run.</p>
</div>
</div>
<div class="section" id="xpath">
of the lxml API you use. The most straight forward way is to call the
<tt class="docutils literal">xpath()</tt> method on an Element or ElementTree:</p>
<pre class="literal-block">
-lxe: xpath_method (--TC T1) 0.7598 msec/pass
-lxe: xpath_method (--TC T2) 12.6798 msec/pass
-lxe: xpath_method (--TC T3) 0.0758 msec/pass
-lxe: xpath_method (--TC T4) 0.6182 msec/pass
+lxe: xpath_method (--TC T1) 0.3982 msec/pass
+lxe: xpath_method (--TC T2) 7.8895 msec/pass
+lxe: xpath_method (--TC T3) 0.0477 msec/pass
+lxe: xpath_method (--TC T4) 0.3982 msec/pass
</pre>
<p>This is well suited for testing and when the XPath expressions are as diverse
as the trees they are called on. However, if you have a single XPath
expression that you want to apply to a larger number of different elements,
the <tt class="docutils literal">XPath</tt> class is the most efficient way to do it:</p>
<pre class="literal-block">
-lxe: xpath_class (--TC T1) 0.2189 msec/pass
-lxe: xpath_class (--TC T2) 1.4110 msec/pass
-lxe: xpath_class (--TC T3) 0.0319 msec/pass
-lxe: xpath_class (--TC T4) 0.0880 msec/pass
+lxe: xpath_class (--TC T1) 0.0713 msec/pass
+lxe: xpath_class (--TC T2) 1.1325 msec/pass
+lxe: xpath_class (--TC T3) 0.0215 msec/pass
+lxe: xpath_class (--TC T4) 0.0722 msec/pass
</pre>
<p>Note that this still allows you to use variables in the expression, so you can
parse it once and then adapt it through variables at call time. In other
cases, where you have a fixed Element or ElementTree and want to run different
expressions on it, you should consider the <tt class="docutils literal">XPathEvaluator</tt>:</p>
<pre class="literal-block">
-lxe: xpath_element (--TR T1) 0.1669 msec/pass
-lxe: xpath_element (--TR T2) 6.9060 msec/pass
-lxe: xpath_element (--TR T3) 0.0451 msec/pass
-lxe: xpath_element (--TR T4) 0.1681 msec/pass
+lxe: xpath_element (--TR T1) 0.1101 msec/pass
+lxe: xpath_element (--TR T2) 2.0473 msec/pass
+lxe: xpath_element (--TR T3) 0.0267 msec/pass
+lxe: xpath_element (--TR T4) 0.1087 msec/pass
</pre>
<p>While it looks slightly slower, creating an XPath object for each of the
expressions generates a much higher overhead here:</p>
<pre class="literal-block">
-lxe: xpath_class_repeat (--TC T1) 0.7451 msec/pass
-lxe: xpath_class_repeat (--TC T2) 12.2290 msec/pass
-lxe: xpath_class_repeat (--TC T3) 0.0730 msec/pass
-lxe: xpath_class_repeat (--TC T4) 0.5970 msec/pass
+lxe: xpath_class_repeat (--TC T1 ) 0.3884 msec/pass
+lxe: xpath_class_repeat (--TC T2 ) 7.6182 msec/pass
+lxe: xpath_class_repeat (--TC T3 ) 0.0465 msec/pass
+lxe: xpath_class_repeat (--TC T4 ) 0.3877 msec/pass
+</pre>
+<p>Note that tree iteration can be substantially faster than XPath if
+your code short-circuits after the first couple of elements were
+found. The XPath engine will always return the complete result set,
+regardless of how much of it will actually be used.</p>
+<p>Here is an example where only the first matching element is being
+searched, a case for which XPath has syntax support as well:</p>
+<pre class="literal-block">
+lxe: find_single (--TR T2) 0.0184 msec/pass
+cET: find_single (--TR T2) 0.0052 msec/pass
+
+lxe: iter_single (--TR T2) 0.0024 msec/pass
+cET: iter_single (--TR T2) 0.0007 msec/pass
+
+lxe: xpath_single (--TR T2) 0.0033 msec/pass
+</pre>
+<p>When looking for the first two elements out of many, the numbers
+explode for XPath, as restricting the result subset requires a
+more complex expression:</p>
+<pre class="literal-block">
+lxe: iterfind_two (--TR T2) 0.0184 msec/pass
+cET: iterfind_two (--TR T2) 0.0062 msec/pass
+
+lxe: iter_two (--TR T2) 0.0029 msec/pass
+cET: iter_two (--TR T2) 0.0017 msec/pass
+
+lxe: xpath_two (--TR T2) 0.2768 msec/pass
</pre>
</div>
<div class="section" id="a-longer-example">
tree. It avoids step-by-step Python element instantiations along the path,
which can substantially improve the access time:</p>
<pre class="literal-block">
-lxe: attribute (--TR T1) 4.8928 msec/pass
-lxe: attribute (--TR T2) 25.5480 msec/pass
-lxe: attribute (--TR T4) 4.6349 msec/pass
+lxe: attribute (--TR T1) 4.1828 msec/pass
+lxe: attribute (--TR T2) 17.3802 msec/pass
+lxe: attribute (--TR T4) 3.8657 msec/pass
-lxe: objectpath (--TR T1) 1.4842 msec/pass
-lxe: objectpath (--TR T2) 21.1990 msec/pass
-lxe: objectpath (--TR T4) 1.4892 msec/pass
+lxe: objectpath (--TR T1) 0.9289 msec/pass
+lxe: objectpath (--TR T2) 13.3109 msec/pass
+lxe: objectpath (--TR T4) 0.9289 msec/pass
-lxe: attributes_deep (--TR T1) 11.9710 msec/pass
-lxe: attributes_deep (--TR T2) 32.4290 msec/pass
-lxe: attributes_deep (--TR T4) 11.4839 msec/pass
+lxe: attributes_deep (--TR T1) 6.2900 msec/pass
+lxe: attributes_deep (--TR T2) 20.4713 msec/pass
+lxe: attributes_deep (--TR T4) 6.1679 msec/pass
-lxe: objectpath_deep (--TR T1) 4.8139 msec/pass
-lxe: objectpath_deep (--TR T2) 24.6511 msec/pass
-lxe: objectpath_deep (--TR T4) 4.7588 msec/pass
+lxe: objectpath_deep (--TR T1) 1.3049 msec/pass
+lxe: objectpath_deep (--TR T2) 14.0815 msec/pass
+lxe: objectpath_deep (--TR T4) 1.3051 msec/pass
</pre>
<p>Note, however, that parsing ObjectPath expressions is not for free either, so
this is most effective for frequently accessing the same element.</p>
subtrees and elements) to cache, you can trade memory usage against access
speed:</p>
<pre class="literal-block">
-lxe: attribute_cached (--TR T1) 3.8228 msec/pass
-lxe: attribute_cached (--TR T2) 23.7138 msec/pass
-lxe: attribute_cached (--TR T4) 3.5269 msec/pass
+lxe: attribute_cached (--TR T1) 3.1357 msec/pass
+lxe: attribute_cached (--TR T2) 15.8911 msec/pass
+lxe: attribute_cached (--TR T4) 2.9194 msec/pass
-lxe: attributes_deep_cached (--TR T1) 4.6771 msec/pass
-lxe: attributes_deep_cached (--TR T2) 24.8699 msec/pass
-lxe: attributes_deep_cached (--TR T4) 4.3321 msec/pass
+lxe: attributes_deep_cached (--TR T1) 3.8984 msec/pass
+lxe: attributes_deep_cached (--TR T2) 16.8300 msec/pass
+lxe: attributes_deep_cached (--TR T4) 3.6936 msec/pass
-lxe: objectpath_deep_cached (--TR T1) 1.1430 msec/pass
-lxe: objectpath_deep_cached (--TR T2) 19.7470 msec/pass
-lxe: objectpath_deep_cached (--TR T4) 1.1740 msec/pass
+lxe: objectpath_deep_cached (--TR T1) 0.7496 msec/pass
+lxe: objectpath_deep_cached (--TR T2) 12.3763 msec/pass
+lxe: objectpath_deep_cached (--TR T4) 0.7427 msec/pass
</pre>
<p>Things to note: you cannot currently use <tt class="docutils literal">weakref.WeakKeyDictionary</tt> objects
for this as lxml's element objects do not support weak references (which are
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="document-loading-and-url-resolving">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Document loading and URL resolving</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu current" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Document loading and URL resolving</h1>
<div class="contents topic" id="contents">
<p class="topic-title first">Contents</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="sax-support">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Sax support</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu current" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Sax support</h1>
<p>In this document we'll describe lxml's SAX support. lxml has support for
producing SAX events for an ElementTree or Element. lxml can also turn SAX
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<h1>Sitemap of lxml.de - Processing XML and HTML with Python</h1>
- <div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/files/">Download files</a></li></ul></div></body>
+ <div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/files/">Download files</a></li></ul></div></body>
</html>
\ No newline at end of file
</head>
<body>
<div class="document" id="the-lxml-etree-tutorial">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">The lxml.etree Tutorial</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu current" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">The lxml.etree Tutorial</h1>
<table class="docinfo" frame="void" rules="none">
<col class="docinfo-name" />
<col class="docinfo-content" />
</pre></div>
<p>As for XML serialisation, the default encoding for plain text
serialisation is ASCII:</p>
-<div class="syntax"><pre><span class="gp">>>> </span><span class="n">br</span> <span class="o">=</span> <span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">'.//br'</span><span class="p">)</span>
+<div class="syntax"><pre><span class="gp">>>> </span><span class="n">br</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s">'br'</span><span class="p">))</span> <span class="c"># get first result of iteration</span>
<span class="gp">>>> </span><span class="n">br</span><span class="o">.</span><span class="n">tail</span> <span class="o">=</span> <span class="s">u'W</span><span class="se">\xf6</span><span class="s">rld'</span>
<span class="gp">>>> </span><span class="n">etree</span><span class="o">.</span><span class="n">tostring</span><span class="p">(</span><span class="n">root</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="s">'text'</span><span class="p">)</span> <span class="c"># doctest: +ELLIPSIS</span>
<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">".//a[@y]"</span><span class="p">))</span>
<span class="go">[]</span>
</pre></div>
+<p>The <tt class="docutils literal">.iter()</tt> method is a special case that only finds specific tags
+in the tree by their name, not based on a path. That means that the
+following commands are equivalent in the success case:</p>
+<div class="syntax"><pre><span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">".//b"</span><span class="p">)</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iterfind</span><span class="p">(</span><span class="s">".//b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+<span class="gp">>>> </span><span class="k">print</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">root</span><span class="o">.</span><span class="n">iter</span><span class="p">(</span><span class="s">"b"</span><span class="p">))</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
+<span class="go">b</span>
+</pre></div>
+<p>Note that the <tt class="docutils literal">.find()</tt> method simply returns None if no match is found,
+whereas the other two examples would raise a <tt class="docutils literal">StopIteration</tt> exception.</p>
</div>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="validation-with-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Validation with lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu current" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu foreign" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">Validation with lxml</h1>
<p>Apart from the built-in DTD support in parsers, lxml currently supports three
schema languages: <a class="reference external" href="http://en.wikipedia.org/wiki/Document_Type_Definition">DTD</a>, <a class="reference external" href="http://www.relaxng.org/">Relax NG</a> and <a class="reference external" href="http://www.w3.org/XML/Schema">XML Schema</a>. All three provide
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
</head>
<body>
<div class="document" id="xpath-and-xslt-with-lxml">
-<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 1-menu"><li class="menu title"><a href="changes-3.1.1.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">XPath and XSLT with lxml</h1>
+<div class="sidemenu"><ul id="lxml-section"><li><span class="section title">lxml</span><ul class="menu foreign" id="index-menu"><li class="menu title"><a href="index.html">lxml</a><ul class="submenu"><li class="menu item"><a href="index.html#introduction">Introduction</a></li><li class="menu item"><a href="index.html#support-the-project">Support the project</a></li><li class="menu item"><a href="index.html#documentation">Documentation</a></li><li class="menu item"><a href="index.html#download">Download</a></li><li class="menu item"><a href="index.html#mailing-list">Mailing list</a></li><li class="menu item"><a href="index.html#bug-tracker">Bug tracker</a></li><li class="menu item"><a href="index.html#license">License</a></li><li class="menu item"><a href="index.html#old-versions">Old Versions</a></li><li class="menu item"><a href="index.html#legal-notice-for-donations">Legal Notice for Donations</a></li></ul></li></ul><ul class="menu foreign" id="intro-menu"><li class="menu title"><a href="intro.html">Why lxml?</a><ul class="submenu"><li class="menu item"><a href="intro.html#motto">Motto</a></li><li class="menu item"><a href="intro.html#aims">Aims</a></li></ul></li></ul><ul class="menu foreign" id="installation-menu"><li class="menu title"><a href="installation.html">Installing lxml</a><ul class="submenu"><li class="menu item"><a href="installation.html#requirements">Requirements</a></li><li class="menu item"><a href="installation.html#installation">Installation</a></li><li class="menu item"><a href="installation.html#building-lxml-from-sources">Building lxml from sources</a></li><li class="menu item"><a href="installation.html#using-lxml-with-python-libxml2">Using lxml with python-libxml2</a></li><li class="menu item"><a href="installation.html#ms-windows">MS Windows</a></li><li class="menu item"><a href="installation.html#macos-x">MacOS-X</a></li></ul></li></ul><ul class="menu foreign" id="performance-menu"><li class="menu title"><a href="performance.html">Benchmarks and Speed</a><ul class="submenu"><li class="menu item"><a href="performance.html#general-notes">General notes</a></li><li class="menu item"><a href="performance.html#how-to-read-the-timings">How to read the timings</a></li><li class="menu item"><a href="performance.html#parsing-and-serialising">Parsing and Serialising</a></li><li class="menu item"><a href="performance.html#the-elementtree-api">The ElementTree API</a></li><li class="menu item"><a href="performance.html#xpath">XPath</a></li><li class="menu item"><a href="performance.html#a-longer-example">A longer example</a></li><li class="menu item"><a href="performance.html#lxml-objectify">lxml.objectify</a></li></ul></li></ul><ul class="menu foreign" id="compatibility-menu"><li class="menu title"><a href="compatibility.html">ElementTree compatibility of lxml.etree</a></li></ul><ul class="menu foreign" id="FAQ-menu"><li class="menu title"><a href="FAQ.html">lxml FAQ - Frequently Asked Questions</a><ul class="submenu"><li class="menu item"><a href="FAQ.html#general-questions">General Questions</a></li><li class="menu item"><a href="FAQ.html#installation">Installation</a></li><li class="menu item"><a href="FAQ.html#contributing">Contributing</a></li><li class="menu item"><a href="FAQ.html#bugs">Bugs</a></li><li class="menu item"><a href="FAQ.html#id1">Threading</a></li><li class="menu item"><a href="FAQ.html#parsing-and-serialisation">Parsing and Serialisation</a></li><li class="menu item"><a href="FAQ.html#xpath-and-document-traversal">XPath and Document Traversal</a></li></ul></li></ul></li></ul><ul id="Developing with lxml-section"><li><span class="section title">Developing with lxml</span><ul class="menu foreign" id="tutorial-menu"><li class="menu title"><a href="tutorial.html">The lxml.etree Tutorial</a><ul class="submenu"><li class="menu item"><a href="tutorial.html#the-element-class">The Element class</a></li><li class="menu item"><a href="tutorial.html#the-elementtree-class">The ElementTree class</a></li><li class="menu item"><a href="tutorial.html#parsing-from-strings-and-files">Parsing from strings and files</a></li><li class="menu item"><a href="tutorial.html#namespaces">Namespaces</a></li><li class="menu item"><a href="tutorial.html#the-e-factory">The E-factory</a></li><li class="menu item"><a href="tutorial.html#elementpath">ElementPath</a></li></ul></li></ul><ul class="menu foreign" id="api index-menu"><li class="menu title"><a href="api/index.html">API reference</a></li></ul><ul class="menu foreign" id="api-menu"><li class="menu title"><a href="api.html">APIs specific to lxml.etree</a><ul class="submenu"><li class="menu item"><a href="api.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="api.html#other-element-apis">Other Element APIs</a></li><li class="menu item"><a href="api.html#trees-and-documents">Trees and Documents</a></li><li class="menu item"><a href="api.html#iteration">Iteration</a></li><li class="menu item"><a href="api.html#error-handling-on-exceptions">Error handling on exceptions</a></li><li class="menu item"><a href="api.html#error-logging">Error logging</a></li><li class="menu item"><a href="api.html#serialisation">Serialisation</a></li><li class="menu item"><a href="api.html#incremental-xml-generation">Incremental XML generation</a></li><li class="menu item"><a href="api.html#cdata">CDATA</a></li><li class="menu item"><a href="api.html#xinclude-and-elementinclude">XInclude and ElementInclude</a></li><li class="menu item"><a href="api.html#write-c14n-on-elementtree">write_c14n on ElementTree</a></li></ul></li></ul><ul class="menu foreign" id="parsing-menu"><li class="menu title"><a href="parsing.html">Parsing XML and HTML with lxml</a><ul class="submenu"><li class="menu item"><a href="parsing.html#parsers">Parsers</a></li><li class="menu item"><a href="parsing.html#the-target-parser-interface">The target parser interface</a></li><li class="menu item"><a href="parsing.html#the-feed-parser-interface">The feed parser interface</a></li><li class="menu item"><a href="parsing.html#iterparse-and-iterwalk">iterparse and iterwalk</a></li><li class="menu item"><a href="parsing.html#python-unicode-strings">Python unicode strings</a></li></ul></li></ul><ul class="menu foreign" id="validation-menu"><li class="menu title"><a href="validation.html">Validation with lxml</a><ul class="submenu"><li class="menu item"><a href="validation.html#validation-at-parse-time">Validation at parse time</a></li><li class="menu item"><a href="validation.html#id1">DTD</a></li><li class="menu item"><a href="validation.html#relaxng">RelaxNG</a></li><li class="menu item"><a href="validation.html#xmlschema">XMLSchema</a></li><li class="menu item"><a href="validation.html#id2">Schematron</a></li><li class="menu item"><a href="validation.html#id3">(Pre-ISO-Schematron)</a></li></ul></li></ul><ul class="menu current" id="xpathxslt-menu"><li class="menu title"><a href="xpathxslt.html">XPath and XSLT with lxml</a><ul class="submenu"><li class="menu item"><a href="xpathxslt.html#xpath">XPath</a></li><li class="menu item"><a href="xpathxslt.html#xslt">XSLT</a></li></ul></li></ul><ul class="menu foreign" id="objectify-menu"><li class="menu title"><a href="objectify.html">lxml.objectify</a><ul class="submenu"><li class="menu item"><a href="objectify.html#the-lxml-objectify-api">The lxml.objectify API</a></li><li class="menu item"><a href="objectify.html#asserting-a-schema">Asserting a Schema</a></li><li class="menu item"><a href="objectify.html#objectpath">ObjectPath</a></li><li class="menu item"><a href="objectify.html#python-data-types">Python data types</a></li><li class="menu item"><a href="objectify.html#how-data-types-are-matched">How data types are matched</a></li><li class="menu item"><a href="objectify.html#what-is-different-from-lxml-etree">What is different from lxml.etree?</a></li></ul></li></ul><ul class="menu foreign" id="lxmlhtml-menu"><li class="menu title"><a href="lxmlhtml.html">lxml.html</a><ul class="submenu"><li class="menu item"><a href="lxmlhtml.html#parsing-html">Parsing HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-element-methods">HTML Element Methods</a></li><li class="menu item"><a href="lxmlhtml.html#running-html-doctests">Running HTML doctests</a></li><li class="menu item"><a href="lxmlhtml.html#creating-html-with-the-e-factory">Creating HTML with the E-factory</a></li><li class="menu item"><a href="lxmlhtml.html#working-with-links">Working with links</a></li><li class="menu item"><a href="lxmlhtml.html#forms">Forms</a></li><li class="menu item"><a href="lxmlhtml.html#cleaning-up-html">Cleaning up HTML</a></li><li class="menu item"><a href="lxmlhtml.html#html-diff">HTML Diff</a></li><li class="menu item"><a href="lxmlhtml.html#examples">Examples</a></li></ul></li></ul><ul class="menu foreign" id="cssselect-menu"><li class="menu title"><a href="cssselect.html">lxml.cssselect</a><ul class="submenu"><li class="menu item"><a href="cssselect.html#the-cssselector-class">The CSSSelector class</a></li><li class="menu item"><a href="cssselect.html#the-cssselect-method">The cssselect method</a></li><li class="menu item"><a href="cssselect.html#supported-selectors">Supported Selectors</a></li><li class="menu item"><a href="cssselect.html#namespaces">Namespaces</a></li></ul></li></ul><ul class="menu foreign" id="elementsoup-menu"><li class="menu title"><a href="elementsoup.html">BeautifulSoup Parser</a><ul class="submenu"><li class="menu item"><a href="elementsoup.html#parsing-with-the-soupparser">Parsing with the soupparser</a></li><li class="menu item"><a href="elementsoup.html#entity-handling">Entity handling</a></li><li class="menu item"><a href="elementsoup.html#using-soupparser-as-a-fallback">Using soupparser as a fallback</a></li><li class="menu item"><a href="elementsoup.html#using-only-the-encoding-detection">Using only the encoding detection</a></li></ul></li></ul><ul class="menu foreign" id="html5parser-menu"><li class="menu title"><a href="html5parser.html">html5lib Parser</a><ul class="submenu"><li class="menu item"><a href="html5parser.html#differences-to-regular-html-parsing">Differences to regular HTML parsing</a></li><li class="menu item"><a href="html5parser.html#function-reference">Function Reference</a></li></ul></li></ul></li></ul><ul id="Extending lxml-section"><li><span class="section title">Extending lxml</span><ul class="menu foreign" id="resolvers-menu"><li class="menu title"><a href="resolvers.html">Document loading and URL resolving</a><ul class="submenu"><li class="menu item"><a href="resolvers.html#xml-catalogs">XML Catalogs</a></li><li class="menu item"><a href="resolvers.html#uri-resolvers">URI Resolvers</a></li><li class="menu item"><a href="resolvers.html#document-loading-in-context">Document loading in context</a></li><li class="menu item"><a href="resolvers.html#i-o-access-control-in-xslt">I/O access control in XSLT</a></li></ul></li></ul><ul class="menu foreign" id="extensions-menu"><li class="menu title"><a href="extensions.html">Python extensions for XPath and XSLT</a><ul class="submenu"><li class="menu item"><a href="extensions.html#xpath-extension-functions">XPath Extension functions</a></li><li class="menu item"><a href="extensions.html#xslt-extension-elements">XSLT extension elements</a></li></ul></li></ul><ul class="menu foreign" id="element classes-menu"><li class="menu title"><a href="element_classes.html">Using custom Element classes in lxml</a><ul class="submenu"><li class="menu item"><a href="element_classes.html#background-on-element-proxies">Background on Element proxies</a></li><li class="menu item"><a href="element_classes.html#element-initialization">Element initialization</a></li><li class="menu item"><a href="element_classes.html#setting-up-a-class-lookup-scheme">Setting up a class lookup scheme</a></li><li class="menu item"><a href="element_classes.html#generating-xml-with-custom-classes">Generating XML with custom classes</a></li><li class="menu item"><a href="element_classes.html#id1">Implementing namespaces</a></li></ul></li></ul><ul class="menu foreign" id="sax-menu"><li class="menu title"><a href="sax.html">Sax support</a><ul class="submenu"><li class="menu item"><a href="sax.html#building-a-tree-from-sax-events">Building a tree from SAX events</a></li><li class="menu item"><a href="sax.html#producing-sax-events-from-an-elementtree-or-element">Producing SAX events from an ElementTree or Element</a></li><li class="menu item"><a href="sax.html#interfacing-with-pulldom-minidom">Interfacing with pulldom/minidom</a></li></ul></li></ul><ul class="menu foreign" id="capi-menu"><li class="menu title"><a href="capi.html">The public C-API of lxml.etree</a><ul class="submenu"><li class="menu item"><a href="capi.html#writing-external-modules-in-cython">Writing external modules in Cython</a></li><li class="menu item"><a href="capi.html#writing-external-modules-in-c">Writing external modules in C</a></li></ul></li></ul></li></ul><ul id="Developing lxml-section"><li><span class="section title">Developing lxml</span><ul class="menu foreign" id="build-menu"><li class="menu title"><a href="build.html">How to build lxml from source</a><ul class="submenu"><li class="menu item"><a href="build.html#cython">Cython</a></li><li class="menu item"><a href="build.html#github-git-and-hg">Github, git and hg</a></li><li class="menu item"><a href="build.html#building-the-sources">Building the sources</a></li><li class="menu item"><a href="build.html#running-the-tests-and-reporting-errors">Running the tests and reporting errors</a></li><li class="menu item"><a href="build.html#building-an-egg">Building an egg</a></li><li class="menu item"><a href="build.html#building-lxml-on-macos-x">Building lxml on MacOS-X</a></li><li class="menu item"><a href="build.html#static-linking-on-windows">Static linking on Windows</a></li><li class="menu item"><a href="build.html#building-debian-packages-from-svn-sources">Building Debian packages from SVN sources</a></li></ul></li></ul><ul class="menu foreign" id="lxml source howto-menu"><li class="menu title"><a href="lxml-source-howto.html">How to read the source of lxml</a><ul class="submenu"><li class="menu item"><a href="lxml-source-howto.html#what-is-cython">What is Cython?</a></li><li class="menu item"><a href="lxml-source-howto.html#where-to-start">Where to start?</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-etree">lxml.etree</a></li><li class="menu item"><a href="lxml-source-howto.html#python-modules">Python modules</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-objectify">lxml.objectify</a></li><li class="menu item"><a href="lxml-source-howto.html#lxml-html">lxml.html</a></li></ul></li></ul><ul class="menu foreign" id="changes 3 1 2-menu"><li class="menu title"><a href="changes-3.1.2.html">Release Changelog</a></li></ul><ul class="menu foreign" id="credits-menu"><li class="menu title"><a href="credits.html">Credits</a><ul class="submenu"><li class="menu item"><a href="credits.html#main-contributors">Main contributors</a></li><li class="menu item"><a href="credits.html#special-thanks-goes-to">Special thanks goes to:</a></li></ul></li></ul></li><li><a href="http://lxml.de/sitemap.html">Sitemap</a></li></ul></div><h1 class="title">XPath and XSLT with lxml</h1>
<p>lxml supports XPath 1.0, XSLT 1.0 and the EXSLT extensions through
libxml2 and libxslt in a standards compliant way.</p>
</div>
<div class="footer">
<hr class="footer" />
-Generated on: 2013-03-29.
+Generated on: 2013-04-12.
</div>
</body>
with `this key <pubkey.asc>`_. Binary builds are not available from
PyPI due to the increased maintenance overhead.
-The latest version is `lxml 3.1.1`_, released 2013-03-29
-(`changes for 3.1.1`_). `Older versions <#old-versions>`_
+The latest version is `lxml 3.1.2`_, released 2013-04-12
+(`changes for 3.1.2`_). `Older versions <#old-versions>`_
are listed below.
Please take a look at the
hg clone git://github.com/lxml/lxml.git lxml
+Alternatively, if you use git, this should work as well::
+
+ git clone git://github.com/lxml/lxml.git lxml
+
You can browse the `source repository`_ and its history through
the web. Please read `how to build lxml from source <build.html>`_
first. The `latest CHANGES`_ of the developer version are also
`3.0 <http://lxml.de/3.0/>`_
and the `latest in-development version <http://lxml.de/dev/>`_.
-.. _`PDF documentation`: lxmldoc-3.1.1.pdf
+.. _`PDF documentation`: lxmldoc-3.1.2.pdf
+
+* `lxml 3.1.1`_, released 2013-03-29 (`changes for 3.1.1`_)
* `lxml 3.1.0`_, released 2013-02-10 (`changes for 3.1.0`_)
* `older releases <http://lxml.de/2.3/#old-versions>`_
+.. _`lxml 3.1.2`: /files/lxml-3.1.2.tgz
.. _`lxml 3.1.1`: /files/lxml-3.1.1.tgz
.. _`lxml 3.1.0`: /files/lxml-3.1.0.tgz
.. _`lxml 3.1beta1`: /files/lxml-3.1beta1.tgz
.. _`lxml 2.3.1`: /files/lxml-2.3.1.tgz
.. _`lxml 2.3`: /files/lxml-2.3.tgz
+.. _`changes for 3.1.2`: /changes-3.1.2.html
.. _`changes for 3.1.1`: /changes-3.1.1.html
.. _`changes for 3.1.0`: /changes-3.1.0.html
.. _`changes for 3.1beta1`: /changes-3.1beta1.html
+++ /dev/null
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.2 (GNU/Linux)
-
-mQGiBEQf3JQRBACciSqxoX0q3VurkRENVVtG/pVqtFh/d2CohbVJlLCrO4s7nnPj
-CTfZFt6tmykZjsLJl24XpEJt0O/C0jLcaBqvXVgVvRXHz4DjEYYuQF4LPthhI4MA
-4T7ExptX4lU5g3BVJ46vPU8uRBbbxarBRas9rYewgnrYKWpZZCa7yMq+9wCgnyyR
-Si4E3viLwi77jda135nA6vcD/iqu8zIl9/dFuUcOvxJrhrm+UdY72puZ1TVczSAH
-GOqMjrKkfyHlaJh/ZzWENpTZIfOdVhy7Chvva18vH4Wz7jKj5UeIpRrBvjAD28r3
-Y3W5bfsnpPkvDOyU1vqBsw4q+/250GXEX0JqV2Rbf5yLVgEZPdGrswO460dr4UVS
-8RS0BACYTmyrz57AugHc5tRkqNw6o7ux2deOT0c3AbUcOWtOocGumCsUf+M1nOrc
-VWkeBWTv4HIIiecWYY/KwIemTthQGjxywaZDxOlBT0BOL/+vfYTq/plZULXr+g90
-rSe82+kLl9N5onkBDJKeDIcJDzRoxIRPV1i0Om/5JBI4jmUnv7QnU3RlZmFuIEJl
-aG5lbCA8c2NvZGVyQHVzZXJzLmJlcmxpb3MuZGU+iF8EExECACAFAkQiqKYCGwMG
-CwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRANPVNpCNOgHi+2AJ0a0JH8iP3RqrOL
-JefvHz1dSl3MxACYo7Ma6CeIgsGnyaSSdNOmNVXn+IhGBBARAgAGBQJEIqk0AAoJ
-ELO5mMzzmgZbmCcAoKZ2En1IlsxBpaPPxgWYrUOWfc6hAKCBWODMMOYptCBkSrjg
-m3gsrjHgYbQsU3RlZmFuIEJlaG5lbCA8c2NvZGVyQHVzZXJzLnNvdXJjZWZvcmdl
-Lm5ldD6IYAQTEQIAIAUCRB/clAIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJ
-EA09U2kI06Aen2YAn0hvuDs+Gslq9vPRFFbsFNJI40PmAJ0chjiiEy0xV5C+n6YX
-XFuldRDILYhGBBARAgAGBQJEIp4AAAoJELO5mMzzmgZbgKQAn3pWrmFdj8YaEyuR
-tEjKVZJDQ6ZVAJ0Y1igwADT40BPra+G/xiLa3YbCrrkCDQREH9ynEAgAiR4/0r0d
-doViNECfSLClllu5K0Bo1SEiMtvVNC3sJYgVzBddD8Xn8UAdjyAgmaL5FC2FsNQu
-RxxKkNlHNYCq8ZSWtZaL2MQ+SyMUyHv6VXVCGuSW0COpzbx58u+SZpjyESJ1kaZc
-73SaIw6kv/dVQHjurwmlo1lg3dLZ3PG08WGCYUMqkkv2K+J7+puzE2Cjo31gTq4s
-LYDCV26wjVQ6BqT2EcHQhVEjh0xq5ugc908cr/2FQAKkTifEbF+OVBGWiFMGgri+
-6+G54/BV/RakpvNCFYBiZHn/M9mQaWt7XoTmnEQ1ldq5KNlRhkqnQRF/NK5VpGcQ
-29As28aqpZTECwADBgf/WlRvBRI1Q1eIv2falEv7C6sOxqc3kr5z1uUBTRG5v9t6
-ff9k/J4oC6cnQx00GK3ZR8ija6bl8zwu+0m0M3rW49Krb1rsiT7r4ahOZ7p9RRro
-oG3NbUJYgMG10D1nxpaioYqa/m+PpILJM0wfYZZEuX0xkZcOB24yb+J7EIcGR09T
-mMd5sXtdTU+w/p7Xi2cP61uQ8qixyHBH8E06qgW2JtVFV9rGn7CNUOvkNaUBRnY5
-QxhdkvKJRx7voOLYWZFUBIWgto+6vmTgKmc2Ho6qddzME9UgwUNcknRgm0cf6Cxr
-6zPtxZl8a6KemjQcK7kARSmMNCDkqp/Pohe519A5vYhJBBgRAgAJBQJEH9ynAhsM
-AAoJEA09U2kI06Aesv4AnjiVQVLzqnNS/64vvMMP1UARY3HtAJ90YxNGhRNIhWYL
-UU16oJlGD/9M1Q==
-=gWy2
------END PGP PUBLIC KEY BLOCK-----
a specific part of the API yourself, please consider sending it to the lxml
mailing list.
-The timings cited below compare lxml 2.3 (with libxml2 2.7.6) to the
-latest developer versions of ElementTree (1.3beta2) and cElementTree
-(1.0.6a3). They were run single-threaded on a 2.5GHz 64bit Intel Core
-Duo machine under Ubuntu Linux 9.10 (Karmic). The C libraries were
-compiled with the same platform specific optimisation flags. The
-Python interpreter (2.6.4) was also manually compiled for the
-platform. Note that many of the following ElementTree timings are
-therefore better then what a normal Python installation with the
-standard library (c)ElementTree modules would yield.
+The timings presented below compare lxml 3.1.1 (with libxml2 2.9.0) to the
+latest released versions of ElementTree (with cElementTree as accelerator
+module) in the standard library of CPython 3.3.0. They were run
+single-threaded on a 2.9GHz 64bit double core Intel i7 machine under
+Ubuntu Linux 12.10 (Quantal). The C libraries were compiled with the
+same platform specific optimisation flags. The Python interpreter was
+also manually compiled for the platform. Note that many of the following
+ElementTree timings are therefore better than what a normal Python
+installation with the standard library (c)ElementTree modules would yield.
+Note also that CPython 2.7 and 3.2+ come with a newer ElementTree version,
+so older Python installations will not perform as good for (c)ElementTree,
+and sometimes substantially worse.
.. _`bench_etree.py`: https://github.com/lxml/lxml/blob/master/benchmark/bench_etree.py
.. _`bench_xpath.py`: https://github.com/lxml/lxml/blob/master/benchmark/bench_xpath.py
executes entirely at the C level, without any interaction with Python
code. The results are rather impressive, especially for UTF-8, which
is native to libxml2. While 20 to 40 times faster than (c)ElementTree
-1.2 (which is part of the standard library since Python 2.5), lxml is
-still more than 7 times as fast as the much improved ElementTree 1.3::
+1.2 (which was part of the standard library before Python 2.7/3.2),
+lxml is still more than 10 times as fast as the much improved
+ElementTree 1.3 in recent Python versions::
- lxe: tostring_utf16 (S-TR T1) 9.8219 msec/pass
- cET: tostring_utf16 (S-TR T1) 88.7740 msec/pass
- ET : tostring_utf16 (S-TR T1) 99.6690 msec/pass
+ lxe: tostring_utf16 (S-TR T1) 7.9958 msec/pass
+ cET: tostring_utf16 (S-TR T1) 83.1358 msec/pass
- lxe: tostring_utf16 (UATR T1) 10.3750 msec/pass
- cET: tostring_utf16 (UATR T1) 90.7581 msec/pass
- ET : tostring_utf16 (UATR T1) 102.3569 msec/pass
+ lxe: tostring_utf16 (UATR T1) 8.3222 msec/pass
+ cET: tostring_utf16 (UATR T1) 84.4688 msec/pass
- lxe: tostring_utf16 (S-TR T2) 10.2711 msec/pass
- cET: tostring_utf16 (S-TR T2) 93.5340 msec/pass
- ET : tostring_utf16 (S-TR T2) 105.8500 msec/pass
+ lxe: tostring_utf16 (S-TR T2) 8.2297 msec/pass
+ cET: tostring_utf16 (S-TR T2) 87.3415 msec/pass
- lxe: tostring_utf8 (S-TR T2) 7.1261 msec/pass
- cET: tostring_utf8 (S-TR T2) 93.4091 msec/pass
- ET : tostring_utf8 (S-TR T2) 105.5419 msec/pass
+ lxe: tostring_utf8 (S-TR T2) 6.5677 msec/pass
+ cET: tostring_utf8 (S-TR T2) 76.2064 msec/pass
- lxe: tostring_utf8 (U-TR T3) 1.4591 msec/pass
- cET: tostring_utf8 (U-TR T3) 29.6180 msec/pass
- ET : tostring_utf8 (U-TR T3) 31.9080 msec/pass
+ lxe: tostring_utf8 (U-TR T3) 1.1952 msec/pass
+ cET: tostring_utf8 (U-TR T3) 22.0058 msec/pass
-The same applies to plain text serialisation. Note that the
-cElementTree version in the standard library does not currently
-support this, as it is a new feature in ET 1.3 and lxml.etree 2.0::
+The difference is somewhat smaller for plain text serialisation::
- lxe: tostring_text_ascii (S-TR T1) 1.9400 msec/pass
- cET: tostring_text_ascii (S-TR T1) 41.6231 msec/pass
- ET : tostring_text_ascii (S-TR T1) 52.7501 msec/pass
+ lxe: tostring_text_ascii (S-TR T1) 2.7738 msec/pass
+ cET: tostring_text_ascii (S-TR T1) 4.7629 msec/pass
- lxe: tostring_text_ascii (S-TR T3) 0.5331 msec/pass
- cET: tostring_text_ascii (S-TR T3) 12.9712 msec/pass
- ET : tostring_text_ascii (S-TR T3) 15.3620 msec/pass
+ lxe: tostring_text_ascii (S-TR T3) 0.8273 msec/pass
+ cET: tostring_text_ascii (S-TR T3) 1.5273 msec/pass
- lxe: tostring_text_utf16 (S-TR T1) 3.2430 msec/pass
- cET: tostring_text_utf16 (S-TR T1) 41.9259 msec/pass
- ET : tostring_text_utf16 (S-TR T1) 53.4091 msec/pass
+ lxe: tostring_text_utf16 (S-TR T1) 2.7659 msec/pass
+ cET: tostring_text_utf16 (S-TR T1) 10.5038 msec/pass
- lxe: tostring_text_utf16 (U-TR T1) 3.6838 msec/pass
- cET: tostring_text_utf16 (U-TR T1) 38.7859 msec/pass
- ET : tostring_text_utf16 (U-TR T1) 50.8440 msec/pass
+ lxe: tostring_text_utf16 (U-TR T1) 2.8017 msec/pass
+ cET: tostring_text_utf16 (U-TR T1) 10.5207 msec/pass
-Unlike ElementTree, the ``tostring()`` function in lxml also supports
-serialisation to a Python unicode string object::
+The ``tostring()`` function also supports serialisation to a Python
+unicode string object, which is currently faster in ElementTree
+under CPython 3.3::
- lxe: tostring_text_unicode (S-TR T1) 2.4869 msec/pass
- lxe: tostring_text_unicode (U-TR T1) 3.0370 msec/pass
- lxe: tostring_text_unicode (S-TR T3) 0.6518 msec/pass
- lxe: tostring_text_unicode (U-TR T3) 0.7300 msec/pass
+ lxe: tostring_text_unicode (S-TR T1) 2.6896 msec/pass
+ cET: tostring_text_unicode (S-TR T1) 1.0056 msec/pass
+
+ lxe: tostring_text_unicode (U-TR T1) 2.7366 msec/pass
+ cET: tostring_text_unicode (U-TR T1) 1.0154 msec/pass
+
+ lxe: tostring_text_unicode (S-TR T3) 0.7997 msec/pass
+ cET: tostring_text_unicode (S-TR T3) 0.3154 msec/pass
+
+ lxe: tostring_text_unicode (U-TR T4) 0.0048 msec/pass
+ cET: tostring_text_unicode (U-TR T4) 0.0160 msec/pass
For parsing, lxml.etree and cElementTree compete for the medal.
Depending on the input, either of the two can be faster. The (c)ET
known to be very fast. Here are some timings from the benchmarking
suite::
- lxe: parse_stringIO (SAXR T1) 19.9990 msec/pass
- cET: parse_stringIO (SAXR T1) 8.4970 msec/pass
- ET : parse_stringIO (SAXR T1) 183.9781 msec/pass
+ lxe: parse_bytesIO (SAXR T1) 13.0246 msec/pass
+ cET: parse_bytesIO (SAXR T1) 8.2929 msec/pass
- lxe: parse_stringIO (S-XR T3) 2.0790 msec/pass
- cET: parse_stringIO (S-XR T3) 2.7430 msec/pass
- ET : parse_stringIO (S-XR T3) 47.4229 msec/pass
+ lxe: parse_bytesIO (S-XR T3) 1.3542 msec/pass
+ cET: parse_bytesIO (S-XR T3) 2.4023 msec/pass
- lxe: parse_stringIO (UAXR T3) 11.1630 msec/pass
- cET: parse_stringIO (UAXR T3) 15.0940 msec/pass
- ET : parse_stringIO (UAXR T3) 92.6890 msec/pass
+ lxe: parse_bytesIO (UAXR T3) 7.5610 msec/pass
+ cET: parse_bytesIO (UAXR T3) 11.2455 msec/pass
And another couple of timings `from a benchmark`_ that Fredrik Lundh
`used to promote cElementTree`_, comparing a number of different
parsers. First, parsing a 274KB XML file containing Shakespeare's
Hamlet::
- lxml.etree.parse done in 0.005 seconds
- cElementTree.parse done in 0.012 seconds
- elementtree.ElementTree.parse done in 0.136 seconds
- elementtree.XMLTreeBuilder: 6636 nodes read in 0.243 seconds
- elementtree.SimpleXMLTreeBuilder: 6636 nodes read in 0.314 seconds
- elementtree.SgmlopXMLTreeBuilder: 6636 nodes read in 0.104 seconds
- minidom tree read in 0.137 seconds
+ xml.etree.ElementTree.parse done in 0.017 seconds
+ xml.etree.cElementTree.parse done in 0.007 seconds
+ xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
+ lxml.etree.parse done in 0.003 seconds
+ drop_whitespace.parse done in 0.003 seconds
+ lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
+ minidom tree read in 0.080 seconds
And a 3.4MB XML file containing the Old Testament::
- lxml.etree.parse done in 0.031 seconds
- cElementTree.parse done in 0.039 seconds
- elementtree.ElementTree.parse done in 0.537 seconds
- elementtree.XMLTreeBuilder: 25317 nodes read in 0.577 seconds
- elementtree.SimpleXMLTreeBuilder: 25317 nodes read in 1.265 seconds
- elementtree.SgmlopXMLTreeBuilder: 25317 nodes read in 0.331 seconds
- minidom tree read in 0.643 seconds
+ xml.etree.ElementTree.parse done in 0.038 seconds
+ xml.etree.cElementTree.parse done in 0.030 seconds
+ xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
+ lxml.etree.parse done in 0.016 seconds
+ drop_whitespace.parse done in 0.015 seconds
+ lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
+ minidom tree read in 0.288 seconds
.. _`from a benchmark`: http://svn.effbot.org/public/elementtree-1.3/benchmark.py
.. _`used to promote cElementTree`: http://effbot.org/zone/celementtree.htm#benchmarks
-Here are the same benchmarks run under an early alpha of CPython 3.3,
-but on a different machine, which makes the absolute numbers
-uncomparable. This time, however, we include the memory usage of the
-process in KB before and after parsing (using os.fork() to make sure
-we start from a clean state each time). For the 274KB hamlet.xml
-file::
-
- Memory usage at start: 7288
- xml.etree.ElementTree.parse done in 0.104 seconds
- Memory usage: 14252 (+6964)
- xml.etree.cElementTree.parse done in 0.016 seconds
- Memory usage: 9748 (+2460)
- lxml.etree.parse done in 0.017 seconds
- Memory usage: 11040 (+3752)
- lxml.etree[remove_blank_space].parse done in 0.015 seconds
- Memory usage: 10088 (+2800)
- minidom tree read in 0.152 seconds
- Memory usage: 30376 (+23088)
+Here are the same benchmarks again, but including the memory usage
+of the process in KB before and after parsing (using os.fork() to
+make sure we start from a clean state each time). For the 274KB
+hamlet.xml file::
+
+ Memory usage: 7284
+ xml.etree.ElementTree.parse done in 0.017 seconds
+ Memory usage: 9432 (+2148)
+ xml.etree.cElementTree.parse done in 0.007 seconds
+ Memory usage: 9432 (+2152)
+ xml.etree.cElementTree.XMLParser.feed(): 6636 nodes read in 0.007 seconds
+ Memory usage: 9448 (+2164)
+ lxml.etree.parse done in 0.003 seconds
+ Memory usage: 11032 (+3748)
+ drop_whitespace.parse done in 0.003 seconds
+ Memory usage: 10224 (+2940)
+ lxml.etree.XMLParser.feed(): 6636 nodes read in 0.004 seconds
+ Memory usage: 11804 (+4520)
+ minidom tree read in 0.080 seconds
+ Memory usage: 12324 (+5040)
And for the 3.4MB Old Testament XML file::
- Memory usage at start: 20456
- xml.etree.ElementTree.parse done in 0.419 seconds
- Memory usage: 46112 (+25656)
- xml.etree.cElementTree.parse done in 0.054 seconds
- Memory usage: 32644 (+12188)
- lxml.etree.parse done in 0.041 seconds
- Memory usage: 37508 (+17052)
- lxml.etree[remove_blank_space].parse done in 0.037 seconds
- Memory usage: 34356 (+13900)
- minidom tree read in 0.671 seconds
- Memory usage: 110448 (+89992)
+ Memory usage: 10420
+ xml.etree.ElementTree.parse done in 0.038 seconds
+ Memory usage: 20660 (+10240)
+ xml.etree.cElementTree.parse done in 0.030 seconds
+ Memory usage: 20660 (+10240)
+ xml.etree.cElementTree.XMLParser.feed(): 25317 nodes read in 0.030 seconds
+ Memory usage: 20844 (+10424)
+ lxml.etree.parse done in 0.016 seconds
+ Memory usage: 27624 (+17204)
+ drop_whitespace.parse done in 0.015 seconds
+ Memory usage: 24468 (+14052)
+ lxml.etree.XMLParser.feed(): 25317 nodes read in 0.022 seconds
+ Memory usage: 29844 (+19424)
+ minidom tree read in 0.288 seconds
+ Memory usage: 28788 (+18368)
As can be seen from the sizes, both lxml.etree and cElementTree are
rather memory friendly compared to the pure Python libraries
-ElementTree and (especially) minidom. And the timings speak for
-themselves anyway.
+ElementTree and (especially) minidom. Comparing to older CPython
+versions, the memory footprint of the minidom library was considerably
+reduced in CPython 3.3, by about a factor of 4 in this case.
For plain parser performance, lxml.etree and cElementTree tend to stay
rather close to each other, usually within a factor of two, with
winners well distributed over both sides. Similar timings can be
observed for the ``iterparse()`` function::
- lxe: iterparse_stringIO (SAXR T1) 24.8621 msec/pass
- cET: iterparse_stringIO (SAXR T1) 17.3280 msec/pass
- ET : iterparse_stringIO (SAXR T1) 199.1270 msec/pass
+ lxe: iterparse_bytesIO (SAXR T1) 17.9198 msec/pass
+ cET: iterparse_bytesIO (SAXR T1) 14.4982 msec/pass
- lxe: iterparse_stringIO (UAXR T3) 12.3630 msec/pass
- cET: iterparse_stringIO (UAXR T3) 17.5190 msec/pass
- ET : iterparse_stringIO (UAXR T3) 95.8610 msec/pass
+ lxe: iterparse_bytesIO (UAXR T3) 8.8522 msec/pass
+ cET: iterparse_bytesIO (UAXR T3) 12.9857 msec/pass
However, if you benchmark the complete round-trip of a serialise-parse
cycle, the numbers will look similar to these::
- lxe: write_utf8_parse_stringIO (S-TR T1) 27.5791 msec/pass
- cET: write_utf8_parse_stringIO (S-TR T1) 158.9060 msec/pass
- ET : write_utf8_parse_stringIO (S-TR T1) 347.8320 msec/pass
+ lxe: write_utf8_parse_bytesIO (S-TR T1) 19.8867 msec/pass
+ cET: write_utf8_parse_bytesIO (S-TR T1) 80.7259 msec/pass
- lxe: write_utf8_parse_stringIO (UATR T2) 34.4141 msec/pass
- cET: write_utf8_parse_stringIO (UATR T2) 187.7041 msec/pass
- ET : write_utf8_parse_stringIO (UATR T2) 388.9449 msec/pass
+ lxe: write_utf8_parse_bytesIO (UATR T2) 23.7896 msec/pass
+ cET: write_utf8_parse_bytesIO (UATR T2) 98.0766 msec/pass
- lxe: write_utf8_parse_stringIO (S-TR T3) 3.7861 msec/pass
- cET: write_utf8_parse_stringIO (S-TR T3) 52.4600 msec/pass
- ET : write_utf8_parse_stringIO (S-TR T3) 101.4550 msec/pass
+ lxe: write_utf8_parse_bytesIO (S-TR T3) 3.0684 msec/pass
+ cET: write_utf8_parse_bytesIO (S-TR T3) 24.6122 msec/pass
- lxe: write_utf8_parse_stringIO (SATR T4) 0.5522 msec/pass
- cET: write_utf8_parse_stringIO (SATR T4) 3.8941 msec/pass
- ET : write_utf8_parse_stringIO (SATR T4) 5.9431 msec/pass
+ lxe: write_utf8_parse_bytesIO (SATR T4) 0.3495 msec/pass
+ cET: write_utf8_parse_bytesIO (SATR T4) 1.9610 msec/pass
For applications that require a high parser throughput of large files,
and that do little to no serialization, both cET and lxml.etree are a
restructuring. This can be seen from the tree setup times of the
benchmark (given in seconds)::
- lxe: -- S- U- -A SA UA
- T1: 0.0407 0.0470 0.0506 0.0396 0.0464 0.0504
- T2: 0.0480 0.0557 0.0584 0.0520 0.0608 0.0627
- T3: 0.0118 0.0132 0.0136 0.0319 0.0322 0.0319
- T4: 0.0002 0.0002 0.0002 0.0006 0.0006 0.0006
- cET: -- S- U- -A SA UA
- T1: 0.0045 0.0043 0.0043 0.0045 0.0043 0.0043
- T2: 0.0068 0.0069 0.0066 0.0078 0.0070 0.0069
- T3: 0.0040 0.0040 0.0040 0.0050 0.0052 0.0067
- T4: 0.0000 0.0000 0.0000 0.0001 0.0001 0.0001
- ET : -- S- U- -A SA UA
- T1: 0.0479 0.1051 0.1279 0.0487 0.1597 0.0484
- T2: 0.1995 0.0553 0.2297 0.2550 0.0550 0.2881
- T3: 0.0177 0.0169 0.0174 0.0185 0.2895 0.0189
- T4: 0.0003 0.0002 0.0003 0.0003 0.0014 0.0003
-
-While lxml is still a lot faster than ET in most cases, cET can be
-several times faster than lxml here. One of the reasons is that lxml
-must encode incoming string data and tag names into UTF-8, and
-additionally discard the created Python elements after their use, when
-they are no longer referenced. ET and cET represent the tree itself
-through these objects, which reduces the overhead in creating them.
+ lxe: -- S- U- -A SA UA
+ T1: 0.0299 0.0343 0.0344 0.0293 0.0345 0.0342
+ T2: 0.0368 0.0423 0.0418 0.0427 0.0474 0.0459
+ T3: 0.0088 0.0084 0.0086 0.0251 0.0258 0.0261
+ T4: 0.0002 0.0002 0.0002 0.0005 0.0006 0.0006
+ cET: -- S- U- -A SA UA
+ T1: 0.0050 0.0045 0.0093 0.0044 0.0043 0.0043
+ T2: 0.0073 0.0075 0.0074 0.0201 0.0075 0.0074
+ T3: 0.0033 0.0213 0.0032 0.0034 0.0033 0.0035
+ T4: 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
+
+The timings are somewhat close to each other, although cET can be
+several times faster than lxml for larger trees. One of the
+reasons is that lxml must encode incoming string data and tag names
+into UTF-8, and additionally discard the created Python elements
+after their use, when they are no longer referenced. ElementTree
+represents the tree itself through these objects, which reduces
+the overhead in creating them.
Child access
------------
-The same reason makes operations like collecting children as in
-``list(element)`` more costly in lxml. Where ET and cET can quickly
-create a shallow copy of their list of children, lxml has to create a
-Python object for each child and collect them in a list::
+The same tree overhead makes operations like collecting children as in
+``list(element)`` more costly in lxml. Where cET can quickly create
+a shallow copy of their list of children, lxml has to create a Python
+object for each child and collect them in a list::
- lxe: root_list_children (--TR T1) 0.0079 msec/pass
- cET: root_list_children (--TR T1) 0.0029 msec/pass
- ET : root_list_children (--TR T1) 0.0100 msec/pass
+ lxe: root_list_children (--TR T1) 0.0038 msec/pass
+ cET: root_list_children (--TR T1) 0.0010 msec/pass
- lxe: root_list_children (--TR T2) 0.0849 msec/pass
- cET: root_list_children (--TR T2) 0.0110 msec/pass
- ET : root_list_children (--TR T2) 0.1481 msec/pass
+ lxe: root_list_children (--TR T2) 0.0455 msec/pass
+ cET: root_list_children (--TR T2) 0.0050 msec/pass
This handicap is also visible when accessing single children::
- lxe: first_child (--TR T2) 0.0699 msec/pass
- cET: first_child (--TR T2) 0.0608 msec/pass
- ET : first_child (--TR T2) 0.3419 msec/pass
+ lxe: first_child (--TR T2) 0.0424 msec/pass
+ cET: first_child (--TR T2) 0.0384 msec/pass
- lxe: last_child (--TR T1) 0.0710 msec/pass
- cET: last_child (--TR T1) 0.0648 msec/pass
- ET : last_child (--TR T1) 0.3309 msec/pass
+ lxe: last_child (--TR T1) 0.0477 msec/pass
+ cET: last_child (--TR T1) 0.0467 msec/pass
... unless you also add the time to find a child index in a bigger
list. ET and cET use Python lists here, which are based on arrays.
The data structure used by libxml2 is a linked tree, and thus, a
linked list of children::
- lxe: middle_child (--TR T1) 0.0989 msec/pass
- cET: middle_child (--TR T1) 0.0598 msec/pass
- ET : middle_child (--TR T1) 0.3390 msec/pass
+ lxe: middle_child (--TR T1) 0.0710 msec/pass
+ cET: middle_child (--TR T1) 0.0420 msec/pass
- lxe: middle_child (--TR T2) 2.7599 msec/pass
- cET: middle_child (--TR T2) 0.0620 msec/pass
- ET : middle_child (--TR T2) 0.3610 msec/pass
+ lxe: middle_child (--TR T2) 1.7393 msec/pass
+ cET: middle_child (--TR T2) 0.0396 msec/pass
Element creation
in. This results in a major performance difference for creating independent
Elements that end up in independently created documents::
- lxe: create_elements (--TC T2) 1.1640 msec/pass
- cET: create_elements (--TC T2) 0.0808 msec/pass
- ET : create_elements (--TC T2) 0.5801 msec/pass
+ lxe: create_elements (--TC T2) 1.0045 msec/pass
+ cET: create_elements (--TC T2) 0.0753 msec/pass
Therefore, it is always preferable to create Elements for the document they
are supposed to end up in, either as SubElements of an Element or using the
explicit ``Element.makeelement()`` call::
- lxe: makeelement (--TC T2) 1.2751 msec/pass
- cET: makeelement (--TC T2) 0.1469 msec/pass
- ET : makeelement (--TC T2) 0.7451 msec/pass
+ lxe: makeelement (--TC T2) 1.0586 msec/pass
+ cET: makeelement (--TC T2) 0.1483 msec/pass
- lxe: create_subelements (--TC T2) 1.1470 msec/pass
- cET: create_subelements (--TC T2) 0.1080 msec/pass
- ET : create_subelements (--TC T2) 1.4369 msec/pass
+ lxe: create_subelements (--TC T2) 0.8826 msec/pass
+ cET: create_subelements (--TC T2) 0.0827 msec/pass
So, if the main performance bottleneck of an application is creating large XML
trees in memory through calls to Element and SubElement, cET is the best
The following benchmark appends all root children of the second tree to the
root of the first tree::
- lxe: append_from_document (--TR T1,T2) 2.0740 msec/pass
- cET: append_from_document (--TR T1,T2) 0.1271 msec/pass
- ET : append_from_document (--TR T1,T2) 0.4020 msec/pass
+ lxe: append_from_document (--TR T1,T2) 1.0812 msec/pass
+ cET: append_from_document (--TR T1,T2) 0.1104 msec/pass
- lxe: append_from_document (--TR T3,T4) 0.0229 msec/pass
- cET: append_from_document (--TR T3,T4) 0.0088 msec/pass
- ET : append_from_document (--TR T3,T4) 0.0291 msec/pass
+ lxe: append_from_document (--TR T3,T4) 0.0155 msec/pass
+ cET: append_from_document (--TR T3,T4) 0.0060 msec/pass
Although these are fairly small numbers compared to parsing, this easily shows
the different performance classes for lxml and (c)ET. Where the latter do not
This difference is not always as visible, but applies to most parts of the
API, like inserting newly created elements::
- lxe: insert_from_document (--TR T1,T2) 7.2598 msec/pass
- cET: insert_from_document (--TR T1,T2) 0.1578 msec/pass
- ET : insert_from_document (--TR T1,T2) 0.5150 msec/pass
+ lxe: insert_from_document (--TR T1,T2) 3.9763 msec/pass
+ cET: insert_from_document (--TR T1,T2) 0.1459 msec/pass
or replacing the child slice by a newly created element::
- lxe: replace_children_element (--TC T1) 0.1149 msec/pass
- cET: replace_children_element (--TC T1) 0.0110 msec/pass
- ET : replace_children_element (--TC T1) 0.0558 msec/pass
+ lxe: replace_children_element (--TC T1) 0.0749 msec/pass
+ cET: replace_children_element (--TC T1) 0.0081 msec/pass
as opposed to replacing the slice with an existing element from the
same document::
- lxe: replace_children (--TC T1) 0.0091 msec/pass
- cET: replace_children (--TC T1) 0.0060 msec/pass
- ET : replace_children (--TC T1) 0.0188 msec/pass
+ lxe: replace_children (--TC T1) 0.0052 msec/pass
+ cET: replace_children (--TC T1) 0.0036 msec/pass
While these numbers are too small to provide a major performance
impact in practice, you should keep this difference in mind when you
-merge very large trees.
+merge very large trees. Note that Elements have a ``makeelement()``
+method that allows to create an Element within the same document,
+thus avoiding the merge overhead when inserting it into that tree.
deepcopy
Deep copying a tree is fast in lxml::
- lxe: deepcopy_all (--TR T1) 5.0900 msec/pass
- cET: deepcopy_all (--TR T1) 57.9181 msec/pass
- ET : deepcopy_all (--TR T1) 499.1000 msec/pass
+ lxe: deepcopy_all (--TR T1) 3.1650 msec/pass
+ cET: deepcopy_all (--TR T1) 53.9973 msec/pass
- lxe: deepcopy_all (-ATR T2) 6.3980 msec/pass
- cET: deepcopy_all (-ATR T2) 65.6390 msec/pass
- ET : deepcopy_all (-ATR T2) 526.5379 msec/pass
+ lxe: deepcopy_all (-ATR T2) 3.7365 msec/pass
+ cET: deepcopy_all (-ATR T2) 61.6267 msec/pass
- lxe: deepcopy_all (S-TR T3) 1.4491 msec/pass
- cET: deepcopy_all (S-TR T3) 14.7018 msec/pass
- ET : deepcopy_all (S-TR T3) 123.5120 msec/pass
+ lxe: deepcopy_all (S-TR T3) 0.7913 msec/pass
+ cET: deepcopy_all (S-TR T3) 13.6220 msec/pass
So, for example, if you have a database-like scenario where you parse in a
large tree and then search and copy independent subtrees from it for further
Tree traversal
--------------
-Another area where lxml is very fast is iteration for tree traversal. If your
-algorithms can benefit from step-by-step traversal of the XML tree and
-especially if few elements are of interest or the target element tag name is
-known, lxml is a good choice::
+Another important area in XML processing is iteration for tree
+traversal. If your algorithms can benefit from step-by-step
+traversal of the XML tree and especially if few elements are of
+interest or the target element tag name is known, the ``.iter()``
+method is a good choice::
- lxe: getiterator_all (--TR T1) 1.6890 msec/pass
- cET: getiterator_all (--TR T1) 23.8621 msec/pass
- ET : getiterator_all (--TR T1) 11.1070 msec/pass
+ lxe: iter_all (--TR T1) 1.0529 msec/pass
+ cET: iter_all (--TR T1) 0.2635 msec/pass
- lxe: getiterator_islice (--TR T2) 0.0188 msec/pass
- cET: getiterator_islice (--TR T2) 0.1841 msec/pass
- ET : getiterator_islice (--TR T2) 11.7059 msec/pass
+ lxe: iter_islice (--TR T2) 0.0110 msec/pass
+ cET: iter_islice (--TR T2) 0.0050 msec/pass
- lxe: getiterator_tag (--TR T2) 0.0119 msec/pass
- cET: getiterator_tag (--TR T2) 0.3560 msec/pass
- ET : getiterator_tag (--TR T2) 10.6668 msec/pass
+ lxe: iter_tag (--TR T2) 0.0079 msec/pass
+ cET: iter_tag (--TR T2) 0.0112 msec/pass
- lxe: getiterator_tag_all (--TR T2) 0.2429 msec/pass
- cET: getiterator_tag_all (--TR T2) 20.3710 msec/pass
- ET : getiterator_tag_all (--TR T2) 10.6280 msec/pass
+ lxe: iter_tag_all (--TR T2) 0.1822 msec/pass
+ cET: iter_tag_all (--TR T2) 0.5343 msec/pass
This translates directly into similar timings for ``Element.findall()``::
- lxe: findall (--TR T2) 2.4588 msec/pass
- cET: findall (--TR T2) 24.1358 msec/pass
- ET : findall (--TR T2) 13.0949 msec/pass
+ lxe: findall (--TR T2) 1.7176 msec/pass
+ cET: findall (--TR T2) 0.9973 msec/pass
- lxe: findall (--TR T3) 0.5939 msec/pass
- cET: findall (--TR T3) 6.9802 msec/pass
- ET : findall (--TR T3) 3.8991 msec/pass
+ lxe: findall (--TR T3) 0.3967 msec/pass
+ cET: findall (--TR T3) 0.2525 msec/pass
- lxe: findall_tag (--TR T2) 0.2789 msec/pass
- cET: findall_tag (--TR T2) 20.5719 msec/pass
- ET : findall_tag (--TR T2) 10.8678 msec/pass
+ lxe: findall_tag (--TR T2) 0.2258 msec/pass
+ cET: findall_tag (--TR T2) 0.5770 msec/pass
- lxe: findall_tag (--TR T3) 0.1638 msec/pass
- cET: findall_tag (--TR T3) 5.0790 msec/pass
- ET : findall_tag (--TR T3) 2.5120 msec/pass
+ lxe: findall_tag (--TR T3) 0.1085 msec/pass
+ cET: findall_tag (--TR T3) 0.1919 msec/pass
Note that all three libraries currently use the same Python
implementation for ``.findall()``, except for their native tree
-iterator (``element.iter()``).
+iterator (``element.iter()``). In general, lxml is very fast
+for iteration, but looses ground against cET when many Elements
+are found and need to be instantiated. So, the more selective
+your search is, the faster lxml will run.
XPath
of the lxml API you use. The most straight forward way is to call the
``xpath()`` method on an Element or ElementTree::
- lxe: xpath_method (--TC T1) 0.7598 msec/pass
- lxe: xpath_method (--TC T2) 12.6798 msec/pass
- lxe: xpath_method (--TC T3) 0.0758 msec/pass
- lxe: xpath_method (--TC T4) 0.6182 msec/pass
+ lxe: xpath_method (--TC T1) 0.3982 msec/pass
+ lxe: xpath_method (--TC T2) 7.8895 msec/pass
+ lxe: xpath_method (--TC T3) 0.0477 msec/pass
+ lxe: xpath_method (--TC T4) 0.3982 msec/pass
This is well suited for testing and when the XPath expressions are as diverse
as the trees they are called on. However, if you have a single XPath
expression that you want to apply to a larger number of different elements,
the ``XPath`` class is the most efficient way to do it::
- lxe: xpath_class (--TC T1) 0.2189 msec/pass
- lxe: xpath_class (--TC T2) 1.4110 msec/pass
- lxe: xpath_class (--TC T3) 0.0319 msec/pass
- lxe: xpath_class (--TC T4) 0.0880 msec/pass
+ lxe: xpath_class (--TC T1) 0.0713 msec/pass
+ lxe: xpath_class (--TC T2) 1.1325 msec/pass
+ lxe: xpath_class (--TC T3) 0.0215 msec/pass
+ lxe: xpath_class (--TC T4) 0.0722 msec/pass
Note that this still allows you to use variables in the expression, so you can
parse it once and then adapt it through variables at call time. In other
cases, where you have a fixed Element or ElementTree and want to run different
expressions on it, you should consider the ``XPathEvaluator``::
- lxe: xpath_element (--TR T1) 0.1669 msec/pass
- lxe: xpath_element (--TR T2) 6.9060 msec/pass
- lxe: xpath_element (--TR T3) 0.0451 msec/pass
- lxe: xpath_element (--TR T4) 0.1681 msec/pass
+ lxe: xpath_element (--TR T1) 0.1101 msec/pass
+ lxe: xpath_element (--TR T2) 2.0473 msec/pass
+ lxe: xpath_element (--TR T3) 0.0267 msec/pass
+ lxe: xpath_element (--TR T4) 0.1087 msec/pass
While it looks slightly slower, creating an XPath object for each of the
expressions generates a much higher overhead here::
- lxe: xpath_class_repeat (--TC T1) 0.7451 msec/pass
- lxe: xpath_class_repeat (--TC T2) 12.2290 msec/pass
- lxe: xpath_class_repeat (--TC T3) 0.0730 msec/pass
- lxe: xpath_class_repeat (--TC T4) 0.5970 msec/pass
+ lxe: xpath_class_repeat (--TC T1 ) 0.3884 msec/pass
+ lxe: xpath_class_repeat (--TC T2 ) 7.6182 msec/pass
+ lxe: xpath_class_repeat (--TC T3 ) 0.0465 msec/pass
+ lxe: xpath_class_repeat (--TC T4 ) 0.3877 msec/pass
+
+Note that tree iteration can be substantially faster than XPath if
+your code short-circuits after the first couple of elements were
+found. The XPath engine will always return the complete result set,
+regardless of how much of it will actually be used.
+
+Here is an example where only the first matching element is being
+searched, a case for which XPath has syntax support as well::
+
+ lxe: find_single (--TR T2) 0.0184 msec/pass
+ cET: find_single (--TR T2) 0.0052 msec/pass
+
+ lxe: iter_single (--TR T2) 0.0024 msec/pass
+ cET: iter_single (--TR T2) 0.0007 msec/pass
+
+ lxe: xpath_single (--TR T2) 0.0033 msec/pass
+
+When looking for the first two elements out of many, the numbers
+explode for XPath, as restricting the result subset requires a
+more complex expression::
+
+ lxe: iterfind_two (--TR T2) 0.0184 msec/pass
+ cET: iterfind_two (--TR T2) 0.0062 msec/pass
+
+ lxe: iter_two (--TR T2) 0.0029 msec/pass
+ cET: iter_two (--TR T2) 0.0017 msec/pass
+
+ lxe: xpath_two (--TR T2) 0.2768 msec/pass
A longer example
tree. It avoids step-by-step Python element instantiations along the path,
which can substantially improve the access time::
- lxe: attribute (--TR T1) 4.8928 msec/pass
- lxe: attribute (--TR T2) 25.5480 msec/pass
- lxe: attribute (--TR T4) 4.6349 msec/pass
+ lxe: attribute (--TR T1) 4.1828 msec/pass
+ lxe: attribute (--TR T2) 17.3802 msec/pass
+ lxe: attribute (--TR T4) 3.8657 msec/pass
- lxe: objectpath (--TR T1) 1.4842 msec/pass
- lxe: objectpath (--TR T2) 21.1990 msec/pass
- lxe: objectpath (--TR T4) 1.4892 msec/pass
+ lxe: objectpath (--TR T1) 0.9289 msec/pass
+ lxe: objectpath (--TR T2) 13.3109 msec/pass
+ lxe: objectpath (--TR T4) 0.9289 msec/pass
- lxe: attributes_deep (--TR T1) 11.9710 msec/pass
- lxe: attributes_deep (--TR T2) 32.4290 msec/pass
- lxe: attributes_deep (--TR T4) 11.4839 msec/pass
+ lxe: attributes_deep (--TR T1) 6.2900 msec/pass
+ lxe: attributes_deep (--TR T2) 20.4713 msec/pass
+ lxe: attributes_deep (--TR T4) 6.1679 msec/pass
- lxe: objectpath_deep (--TR T1) 4.8139 msec/pass
- lxe: objectpath_deep (--TR T2) 24.6511 msec/pass
- lxe: objectpath_deep (--TR T4) 4.7588 msec/pass
+ lxe: objectpath_deep (--TR T1) 1.3049 msec/pass
+ lxe: objectpath_deep (--TR T2) 14.0815 msec/pass
+ lxe: objectpath_deep (--TR T4) 1.3051 msec/pass
Note, however, that parsing ObjectPath expressions is not for free either, so
this is most effective for frequently accessing the same element.
subtrees and elements) to cache, you can trade memory usage against access
speed::
- lxe: attribute_cached (--TR T1) 3.8228 msec/pass
- lxe: attribute_cached (--TR T2) 23.7138 msec/pass
- lxe: attribute_cached (--TR T4) 3.5269 msec/pass
+ lxe: attribute_cached (--TR T1) 3.1357 msec/pass
+ lxe: attribute_cached (--TR T2) 15.8911 msec/pass
+ lxe: attribute_cached (--TR T4) 2.9194 msec/pass
- lxe: attributes_deep_cached (--TR T1) 4.6771 msec/pass
- lxe: attributes_deep_cached (--TR T2) 24.8699 msec/pass
- lxe: attributes_deep_cached (--TR T4) 4.3321 msec/pass
+ lxe: attributes_deep_cached (--TR T1) 3.8984 msec/pass
+ lxe: attributes_deep_cached (--TR T2) 16.8300 msec/pass
+ lxe: attributes_deep_cached (--TR T4) 3.6936 msec/pass
- lxe: objectpath_deep_cached (--TR T1) 1.1430 msec/pass
- lxe: objectpath_deep_cached (--TR T2) 19.7470 msec/pass
- lxe: objectpath_deep_cached (--TR T4) 1.1740 msec/pass
+ lxe: objectpath_deep_cached (--TR T1) 0.7496 msec/pass
+ lxe: objectpath_deep_cached (--TR T2) 12.3763 msec/pass
+ lxe: objectpath_deep_cached (--TR T4) 0.7427 msec/pass
Things to note: you cannot currently use ``weakref.WeakKeyDictionary`` objects
for this as lxml's element objects do not support weak references (which are
>>> try: basestring = basestring
... except (NameError, KeyError): basestring = str
+ >>> try: next = next
+ ... except NameError:
+ ... def next(it): return it.next()
A common way to import ``lxml.etree`` is as follows:
.. sourcecode:: pycon
- >>> br = root.find('.//br')
+ >>> br = next(root.iter('br')) # get first result of iteration
>>> br.tail = u'W\xf6rld'
>>> etree.tostring(root, method='text') # doctest: +ELLIPSIS
a
>>> print(root.findall(".//a[@y]"))
[]
+
+The ``.iter()`` method is a special case that only finds specific tags
+in the tree by their name, not based on a path. That means that the
+following commands are equivalent in the success case:
+
+.. sourcecode:: pycon
+
+ >>> print(root.find(".//b").tag)
+ b
+ >>> print(next(root.iterfind(".//b")).tag)
+ b
+ >>> print(next(root.iter("b")).tag)
+ b
+
+Note that the ``.find()`` method simply returns None if no match is found,
+whereas the other two examples would raise a ``StopIteration`` exception.
--- /dev/null
+[egg_info]
+tag_build =
+tag_date = 0
+tag_svn_revision = 0
+
import os
import re
import sys
-import glob
import fnmatch
# for command line options and supported environment variables, please
except ImportError:
pass
-from distutils.core import setup
+try:
+ from setuptools import setup
+except ImportError:
+ from distutils.core import setup
import versioninfo
import setupinfo
--- /dev/null
+Metadata-Version: 1.1
+Name: lxml
+Version: 3.1.2
+Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
+Home-page: http://lxml.de/
+Author: lxml dev team
+Author-email: lxml-dev@lxml.de
+License: UNKNOWN
+Download-URL: http://pypi.python.org/packages/source/l/lxml/lxml-3.1.2.tar.gz
+Description: lxml is a Pythonic, mature binding for the libxml2 and libxslt libraries. It
+ provides safe and convenient access to these libraries using the ElementTree
+ API.
+
+ It extends the ElementTree API significantly to offer support for XPath,
+ RelaxNG, XML Schema, XSLT, C14N and much more.
+
+ To contact the project, go to the `project home page
+ <http://lxml.de/>`_ or see our bug tracker at
+ https://launchpad.net/lxml
+
+ In case you want to use the current in-development version of lxml,
+ you can get it from the github repository at
+ https://github.com/lxml/lxml . Note that this requires Cython to
+ build the sources, see the build instructions on the project home
+ page. To the same end, running ``easy_install lxml==dev`` will
+ install lxml from
+ https://github.com/lxml/lxml/tarball/master#egg=lxml-dev if you have
+ an appropriate version of Cython installed.
+
+
+ After an official release of a new stable series, bug fixes may become
+ available at
+ https://github.com/lxml/lxml/tree/lxml-3.1 .
+ Running ``easy_install lxml==3.1bugfix`` will install
+ the unreleased branch state from
+ https://github.com/lxml/lxml/tarball/lxml-3.1#egg=lxml-3.1bugfix
+ as soon as a maintenance branch has been established. Note that this
+ requires Cython to be installed at an appropriate version for the build.
+
+ 3.1.2 (2013-04-12)
+ ==================
+
+ Features added
+ --------------
+
+ Bugs fixed
+ ----------
+
+ * LP#1136509: Passing attributes through the namespace-unaware API of
+ the sax bridge (i.e. the ``handler.startElement()`` method) failed
+ with a ``TypeError``. Patch by Mike Bayer.
+
+ * LP#1123074: Fix serialisation error in XSLT output when converting
+ the result tree to a Unicode string.
+
+ * GH#105: Replace illegal usage of ``xmlBufLength()`` in libxml2 2.9.0
+ by properly exported API function ``xmlBufUse()``.
+
+ Other changes
+ -------------
+
+
+
+Platform: UNKNOWN
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: Information Technology
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Cython
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.4
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Programming Language :: Python :: 3.2
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: C
+Classifier: Operating System :: OS Independent
+Classifier: Topic :: Text Processing :: Markup :: HTML
+Classifier: Topic :: Text Processing :: Markup :: XML
+Classifier: Topic :: Software Development :: Libraries :: Python Modules
--- /dev/null
+CHANGES.txt
+CREDITS.txt
+INSTALL.txt
+LICENSES.txt
+MANIFEST.in
+Makefile
+README.rst
+TODO.txt
+buildlibxml.py
+ez_setup.py
+selftest.py
+selftest2.py
+setup.cfg
+setup.py
+setupinfo.py
+test.py
+update-error-constants.py
+version.txt
+versioninfo.py
+benchmark/bench_etree.py
+benchmark/bench_objectify.py
+benchmark/bench_xpath.py
+benchmark/bench_xslt.py
+benchmark/benchbase.py
+doc/FAQ.txt
+doc/api.txt
+doc/build.txt
+doc/capi.txt
+doc/compatibility.txt
+doc/cssselect.txt
+doc/docstructure.py
+doc/element_classes.txt
+doc/elementsoup.txt
+doc/extensions.txt
+doc/html5parser.txt
+doc/intro.txt
+doc/lxml-source-howto.txt
+doc/lxml.mgp
+doc/lxml2.txt
+doc/lxmlhtml.txt
+doc/main.txt
+doc/memorymanagement.txt
+doc/mkhtml.py
+doc/mklatex.py
+doc/objectify.txt
+doc/parsing.txt
+doc/performance.txt
+doc/pubkey.asc
+doc/resolvers.txt
+doc/rest2html.py
+doc/rest2latex.py
+doc/sax.txt
+doc/test.xml
+doc/tutorial.txt
+doc/valgrind.txt
+doc/validation.txt
+doc/xpathxslt.txt
+doc/html/FAQ.html
+doc/html/api.html
+doc/html/build.html
+doc/html/capi.html
+doc/html/changes-3.1.2.html
+doc/html/compatibility.html
+doc/html/credits.html
+doc/html/cssselect.html
+doc/html/element_classes.html
+doc/html/elementsoup.html
+doc/html/extensions.html
+doc/html/html5parser.html
+doc/html/index.html
+doc/html/installation.html
+doc/html/intro.html
+doc/html/lxml-source-howto.html
+doc/html/lxmlhtml.html
+doc/html/objectify.html
+doc/html/parsing.html
+doc/html/performance.html
+doc/html/pubkey.asc
+doc/html/resolvers.html
+doc/html/sax.html
+doc/html/sitemap.html
+doc/html/style.css
+doc/html/tagpython-big.png
+doc/html/tutorial.html
+doc/html/validation.html
+doc/html/xpathxslt.html
+doc/html/api/abc.ABCMeta-class.html
+doc/html/api/api-objects.txt
+doc/html/api/class-tree.html
+doc/html/api/deprecated-index.html
+doc/html/api/epydoc.css
+doc/html/api/exceptions.AssertionError-class.html
+doc/html/api/frames.html
+doc/html/api/help.html
+doc/html/api/identifier-index-A.html
+doc/html/api/identifier-index-B.html
+doc/html/api/identifier-index-C.html
+doc/html/api/identifier-index-D.html
+doc/html/api/identifier-index-E.html
+doc/html/api/identifier-index-F.html
+doc/html/api/identifier-index-G.html
+doc/html/api/identifier-index-H.html
+doc/html/api/identifier-index-I.html
+doc/html/api/identifier-index-J.html
+doc/html/api/identifier-index-K.html
+doc/html/api/identifier-index-L.html
+doc/html/api/identifier-index-M.html
+doc/html/api/identifier-index-N.html
+doc/html/api/identifier-index-O.html
+doc/html/api/identifier-index-P.html
+doc/html/api/identifier-index-Q.html
+doc/html/api/identifier-index-R.html
+doc/html/api/identifier-index-S.html
+doc/html/api/identifier-index-T.html
+doc/html/api/identifier-index-U.html
+doc/html/api/identifier-index-V.html
+doc/html/api/identifier-index-W.html
+doc/html/api/identifier-index-X.html
+doc/html/api/identifier-index-Y.html
+doc/html/api/identifier-index-Z.html
+doc/html/api/identifier-index-_.html
+doc/html/api/identifier-index.html
+doc/html/api/index.html
+doc/html/api/lxml-module.html
+doc/html/api/lxml-pysrc.html
+doc/html/api/lxml.ElementInclude-module.html
+doc/html/api/lxml.ElementInclude-pysrc.html
+doc/html/api/lxml.ElementInclude.FatalIncludeError-class.html
+doc/html/api/lxml.builder-module.html
+doc/html/api/lxml.builder-pysrc.html
+doc/html/api/lxml.builder.ElementMaker-class.html
+doc/html/api/lxml.cssselect-module.html
+doc/html/api/lxml.cssselect-pysrc.html
+doc/html/api/lxml.cssselect.CSSSelector-class.html
+doc/html/api/lxml.cssselect.LxmlHTMLTranslator-class.html
+doc/html/api/lxml.cssselect.LxmlTranslator-class.html
+doc/html/api/lxml.doctestcompare-module.html
+doc/html/api/lxml.doctestcompare-pysrc.html
+doc/html/api/lxml.doctestcompare.LHTMLOutputChecker-class.html
+doc/html/api/lxml.doctestcompare.LXMLOutputChecker-class.html
+doc/html/api/lxml.doctestcompare._RestoreChecker-class.html
+doc/html/api/lxml.etree-module.html
+doc/html/api/lxml.etree.AncestorsIterator-class.html
+doc/html/api/lxml.etree.AttributeBasedElementClassLookup-class.html
+doc/html/api/lxml.etree.C14NError-class.html
+doc/html/api/lxml.etree.CDATA-class.html
+doc/html/api/lxml.etree.CommentBase-class.html
+doc/html/api/lxml.etree.CustomElementClassLookup-class.html
+doc/html/api/lxml.etree.DTD-class.html
+doc/html/api/lxml.etree.DTDError-class.html
+doc/html/api/lxml.etree.DTDParseError-class.html
+doc/html/api/lxml.etree.DTDValidateError-class.html
+doc/html/api/lxml.etree.DocInfo-class.html
+doc/html/api/lxml.etree.DocumentInvalid-class.html
+doc/html/api/lxml.etree.ETCompatXMLParser-class.html
+doc/html/api/lxml.etree.ETXPath-class.html
+doc/html/api/lxml.etree.ElementBase-class.html
+doc/html/api/lxml.etree.ElementChildIterator-class.html
+doc/html/api/lxml.etree.ElementClassLookup-class.html
+doc/html/api/lxml.etree.ElementDefaultClassLookup-class.html
+doc/html/api/lxml.etree.ElementDepthFirstIterator-class.html
+doc/html/api/lxml.etree.ElementNamespaceClassLookup-class.html
+doc/html/api/lxml.etree.ElementTextIterator-class.html
+doc/html/api/lxml.etree.EntityBase-class.html
+doc/html/api/lxml.etree.Error-class.html
+doc/html/api/lxml.etree.ErrorDomains-class.html
+doc/html/api/lxml.etree.ErrorLevels-class.html
+doc/html/api/lxml.etree.ErrorTypes-class.html
+doc/html/api/lxml.etree.FallbackElementClassLookup-class.html
+doc/html/api/lxml.etree.HTMLParser-class.html
+doc/html/api/lxml.etree.LxmlError-class.html
+doc/html/api/lxml.etree.LxmlRegistryError-class.html
+doc/html/api/lxml.etree.LxmlSyntaxError-class.html
+doc/html/api/lxml.etree.NamespaceRegistryError-class.html
+doc/html/api/lxml.etree.PIBase-class.html
+doc/html/api/lxml.etree.ParseError-class.html
+doc/html/api/lxml.etree.ParserBasedElementClassLookup-class.html
+doc/html/api/lxml.etree.ParserError-class.html
+doc/html/api/lxml.etree.PyErrorLog-class.html
+doc/html/api/lxml.etree.PythonElementClassLookup-class.html
+doc/html/api/lxml.etree.QName-class.html
+doc/html/api/lxml.etree.RelaxNG-class.html
+doc/html/api/lxml.etree.RelaxNGError-class.html
+doc/html/api/lxml.etree.RelaxNGErrorTypes-class.html
+doc/html/api/lxml.etree.RelaxNGParseError-class.html
+doc/html/api/lxml.etree.RelaxNGValidateError-class.html
+doc/html/api/lxml.etree.Resolver-class.html
+doc/html/api/lxml.etree.Schematron-class.html
+doc/html/api/lxml.etree.SchematronError-class.html
+doc/html/api/lxml.etree.SchematronParseError-class.html
+doc/html/api/lxml.etree.SchematronValidateError-class.html
+doc/html/api/lxml.etree.SerialisationError-class.html
+doc/html/api/lxml.etree.SiblingsIterator-class.html
+doc/html/api/lxml.etree.TreeBuilder-class.html
+doc/html/api/lxml.etree.XInclude-class.html
+doc/html/api/lxml.etree.XIncludeError-class.html
+doc/html/api/lxml.etree.XMLParser-class.html
+doc/html/api/lxml.etree.XMLSchema-class.html
+doc/html/api/lxml.etree.XMLSchemaError-class.html
+doc/html/api/lxml.etree.XMLSchemaParseError-class.html
+doc/html/api/lxml.etree.XMLSchemaValidateError-class.html
+doc/html/api/lxml.etree.XMLSyntaxError-class.html
+doc/html/api/lxml.etree.XPath-class.html
+doc/html/api/lxml.etree.XPathDocumentEvaluator-class.html
+doc/html/api/lxml.etree.XPathElementEvaluator-class.html
+doc/html/api/lxml.etree.XPathError-class.html
+doc/html/api/lxml.etree.XPathEvalError-class.html
+doc/html/api/lxml.etree.XPathFunctionError-class.html
+doc/html/api/lxml.etree.XPathResultError-class.html
+doc/html/api/lxml.etree.XPathSyntaxError-class.html
+doc/html/api/lxml.etree.XSLT-class.html
+doc/html/api/lxml.etree.XSLTAccessControl-class.html
+doc/html/api/lxml.etree.XSLTApplyError-class.html
+doc/html/api/lxml.etree.XSLTError-class.html
+doc/html/api/lxml.etree.XSLTExtension-class.html
+doc/html/api/lxml.etree.XSLTExtensionError-class.html
+doc/html/api/lxml.etree.XSLTParseError-class.html
+doc/html/api/lxml.etree.XSLTSaveError-class.html
+doc/html/api/lxml.etree._Attrib-class.html
+doc/html/api/lxml.etree._BaseErrorLog-class.html
+doc/html/api/lxml.etree._Comment-class.html
+doc/html/api/lxml.etree._Document-class.html
+doc/html/api/lxml.etree._DomainErrorLog-class.html
+doc/html/api/lxml.etree._Element-class.html
+doc/html/api/lxml.etree._ElementIterator-class.html
+doc/html/api/lxml.etree._ElementMatchIterator-class.html
+doc/html/api/lxml.etree._ElementStringResult-class.html
+doc/html/api/lxml.etree._ElementTagMatcher-class.html
+doc/html/api/lxml.etree._ElementTree-class.html
+doc/html/api/lxml.etree._ElementUnicodeResult-class.html
+doc/html/api/lxml.etree._Entity-class.html
+doc/html/api/lxml.etree._ErrorLog-class.html
+doc/html/api/lxml.etree._FeedParser-class.html
+doc/html/api/lxml.etree._IDDict-class.html
+doc/html/api/lxml.etree._ListErrorLog-class.html
+doc/html/api/lxml.etree._LogEntry-class.html
+doc/html/api/lxml.etree._ProcessingInstruction-class.html
+doc/html/api/lxml.etree._RotatingErrorLog-class.html
+doc/html/api/lxml.etree._SaxParserTarget-class.html
+doc/html/api/lxml.etree._TargetParserResult-class.html
+doc/html/api/lxml.etree._Validator-class.html
+doc/html/api/lxml.etree._XPathEvaluatorBase-class.html
+doc/html/api/lxml.etree._XSLTProcessingInstruction-class.html
+doc/html/api/lxml.etree._XSLTResultTree-class.html
+doc/html/api/lxml.etree.iterparse-class.html
+doc/html/api/lxml.etree.iterwalk-class.html
+doc/html/api/lxml.etree.xmlfile-class.html
+doc/html/api/lxml.html-module.html
+doc/html/api/lxml.html-pysrc.html
+doc/html/api/lxml.html.CheckboxGroup-class.html
+doc/html/api/lxml.html.CheckboxValues-class.html
+doc/html/api/lxml.html.ElementSoup-module.html
+doc/html/api/lxml.html.ElementSoup-pysrc.html
+doc/html/api/lxml.html.FieldsDict-class.html
+doc/html/api/lxml.html.FormElement-class.html
+doc/html/api/lxml.html.HTMLParser-class.html
+doc/html/api/lxml.html.HtmlComment-class.html
+doc/html/api/lxml.html.HtmlElement-class.html
+doc/html/api/lxml.html.HtmlElementClassLookup-class.html
+doc/html/api/lxml.html.HtmlEntity-class.html
+doc/html/api/lxml.html.HtmlMixin-class.html
+doc/html/api/lxml.html.HtmlProcessingInstruction-class.html
+doc/html/api/lxml.html.InputElement-class.html
+doc/html/api/lxml.html.InputGetter-class.html
+doc/html/api/lxml.html.InputMixin-class.html
+doc/html/api/lxml.html.LabelElement-class.html
+doc/html/api/lxml.html.MultipleSelectOptions-class.html
+doc/html/api/lxml.html.RadioGroup-class.html
+doc/html/api/lxml.html.SelectElement-class.html
+doc/html/api/lxml.html.TextareaElement-class.html
+doc/html/api/lxml.html.XHTMLParser-class.html
+doc/html/api/lxml.html._MethodFunc-class.html
+doc/html/api/lxml.html.builder-module.html
+doc/html/api/lxml.html.builder-pysrc.html
+doc/html/api/lxml.html.clean-module.html
+doc/html/api/lxml.html.clean-pysrc.html
+doc/html/api/lxml.html.clean.Cleaner-class.html
+doc/html/api/lxml.html.defs-module.html
+doc/html/api/lxml.html.defs-pysrc.html
+doc/html/api/lxml.html.diff-module.html
+doc/html/api/lxml.html.diff-pysrc.html
+doc/html/api/lxml.html.diff.DEL_END-class.html
+doc/html/api/lxml.html.diff.DEL_START-class.html
+doc/html/api/lxml.html.diff.InsensitiveSequenceMatcher-class.html
+doc/html/api/lxml.html.diff.NoDeletes-class.html
+doc/html/api/lxml.html.diff.href_token-class.html
+doc/html/api/lxml.html.diff.tag_token-class.html
+doc/html/api/lxml.html.diff.token-class.html
+doc/html/api/lxml.html.formfill-module.html
+doc/html/api/lxml.html.formfill-pysrc.html
+doc/html/api/lxml.html.formfill.DefaultErrorCreator-class.html
+doc/html/api/lxml.html.formfill.FormNotFound-class.html
+doc/html/api/lxml.html.html5parser-module.html
+doc/html/api/lxml.html.html5parser-pysrc.html
+doc/html/api/lxml.html.html5parser.HTMLParser-class.html
+doc/html/api/lxml.html.html5parser.XHTMLParser-class.html
+doc/html/api/lxml.html.soupparser-module.html
+doc/html/api/lxml.html.soupparser-pysrc.html
+doc/html/api/lxml.html.usedoctest-module.html
+doc/html/api/lxml.html.usedoctest-pysrc.html
+doc/html/api/lxml.includes-module.html
+doc/html/api/lxml.includes-pysrc.html
+doc/html/api/lxml.isoschematron-module.html
+doc/html/api/lxml.isoschematron-pysrc.html
+doc/html/api/lxml.isoschematron.Schematron-class.html
+doc/html/api/lxml.objectify-module.html
+doc/html/api/lxml.objectify.BoolElement-class.html
+doc/html/api/lxml.objectify.ElementMaker-class.html
+doc/html/api/lxml.objectify.FloatElement-class.html
+doc/html/api/lxml.objectify.IntElement-class.html
+doc/html/api/lxml.objectify.LongElement-class.html
+doc/html/api/lxml.objectify.NoneElement-class.html
+doc/html/api/lxml.objectify.NumberElement-class.html
+doc/html/api/lxml.objectify.ObjectPath-class.html
+doc/html/api/lxml.objectify.ObjectifiedDataElement-class.html
+doc/html/api/lxml.objectify.ObjectifiedElement-class.html
+doc/html/api/lxml.objectify.ObjectifyElementClassLookup-class.html
+doc/html/api/lxml.objectify.PyType-class.html
+doc/html/api/lxml.objectify.StringElement-class.html
+doc/html/api/lxml.pyclasslookup-module.html
+doc/html/api/lxml.pyclasslookup-pysrc.html
+doc/html/api/lxml.sax-module.html
+doc/html/api/lxml.sax-pysrc.html
+doc/html/api/lxml.sax.ElementTreeContentHandler-class.html
+doc/html/api/lxml.sax.ElementTreeProducer-class.html
+doc/html/api/lxml.sax.SaxError-class.html
+doc/html/api/lxml.tests-module.html
+doc/html/api/lxml.tests-pysrc.html
+doc/html/api/lxml.tests.common_imports-module.html
+doc/html/api/lxml.tests.common_imports-pysrc.html
+doc/html/api/lxml.tests.common_imports.HelperTestCase-class.html
+doc/html/api/lxml.tests.common_imports.LargeFileLike-class.html
+doc/html/api/lxml.tests.common_imports.LargeFileLikeUnicode-class.html
+doc/html/api/lxml.tests.common_imports.SillyFileLike-class.html
+doc/html/api/lxml.tests.test_builder-module.html
+doc/html/api/lxml.tests.test_builder-pysrc.html
+doc/html/api/lxml.tests.test_builder.BuilderTestCase-class.html
+doc/html/api/lxml.tests.test_classlookup-module.html
+doc/html/api/lxml.tests.test_classlookup-pysrc.html
+doc/html/api/lxml.tests.test_classlookup.ClassLookupTestCase-class.html
+doc/html/api/lxml.tests.test_classlookup.ProxyTestCase-class.html
+doc/html/api/lxml.tests.test_css-module.html
+doc/html/api/lxml.tests.test_css-pysrc.html
+doc/html/api/lxml.tests.test_css.CSSTestCase-class.html
+doc/html/api/lxml.tests.test_dtd-module.html
+doc/html/api/lxml.tests.test_dtd-pysrc.html
+doc/html/api/lxml.tests.test_dtd.ETreeDtdTestCase-class.html
+doc/html/api/lxml.tests.test_elementtree-module.html
+doc/html/api/lxml.tests.test_elementtree-pysrc.html
+doc/html/api/lxml.tests.test_elementtree.CElementTreeTestCase-class.html
+doc/html/api/lxml.tests.test_elementtree.ETreeTestCase-class.html
+doc/html/api/lxml.tests.test_elementtree.ElementTreeTestCase-class.html
+doc/html/api/lxml.tests.test_elementtree._ETreeTestCaseBase-class.html
+doc/html/api/lxml.tests.test_errors-module.html
+doc/html/api/lxml.tests.test_errors-pysrc.html
+doc/html/api/lxml.tests.test_errors.ErrorTestCase-class.html
+doc/html/api/lxml.tests.test_etree-module.html
+doc/html/api/lxml.tests.test_etree-pysrc.html
+doc/html/api/lxml.tests.test_etree.ETreeC14NTestCase-class.html
+doc/html/api/lxml.tests.test_etree.ETreeErrorLogTest-class.html
+doc/html/api/lxml.tests.test_etree.ETreeOnlyTestCase-class.html
+doc/html/api/lxml.tests.test_etree.ETreeWriteTestCase-class.html
+doc/html/api/lxml.tests.test_etree.ETreeXIncludeTestCase-class.html
+doc/html/api/lxml.tests.test_etree.ElementIncludeTestCase-class.html
+doc/html/api/lxml.tests.test_etree._XIncludeTestCase-class.html
+doc/html/api/lxml.tests.test_htmlparser-module.html
+doc/html/api/lxml.tests.test_htmlparser-pysrc.html
+doc/html/api/lxml.tests.test_htmlparser.HtmlParserTestCase-class.html
+doc/html/api/lxml.tests.test_incremental_xmlfile-module.html
+doc/html/api/lxml.tests.test_incremental_xmlfile-pysrc.html
+doc/html/api/lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html
+doc/html/api/lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html
+doc/html/api/lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html
+doc/html/api/lxml.tests.test_incremental_xmlfile.TempXmlFileTestCase-class.html
+doc/html/api/lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html
+doc/html/api/lxml.tests.test_io-module.html
+doc/html/api/lxml.tests.test_io-pysrc.html
+doc/html/api/lxml.tests.test_io.ETreeIOTestCase-class.html
+doc/html/api/lxml.tests.test_io.ElementTreeIOTestCase-class.html
+doc/html/api/lxml.tests.test_io._IOTestCaseBase-class.html
+doc/html/api/lxml.tests.test_isoschematron-module.html
+doc/html/api/lxml.tests.test_isoschematron-pysrc.html
+doc/html/api/lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html
+doc/html/api/lxml.tests.test_nsclasses-module.html
+doc/html/api/lxml.tests.test_nsclasses-pysrc.html
+doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html
+doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.bluff_class-class.html
+doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.default_class-class.html
+doc/html/api/lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase.maeh_class-class.html
+doc/html/api/lxml.tests.test_objectify-module.html
+doc/html/api/lxml.tests.test_objectify-pysrc.html
+doc/html/api/lxml.tests.test_objectify.ObjectifyTestCase-class.html
+doc/html/api/lxml.tests.test_pyclasslookup-module.html
+doc/html/api/lxml.tests.test_pyclasslookup-pysrc.html
+doc/html/api/lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html
+doc/html/api/lxml.tests.test_relaxng-module.html
+doc/html/api/lxml.tests.test_relaxng-pysrc.html
+doc/html/api/lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html
+doc/html/api/lxml.tests.test_sax-module.html
+doc/html/api/lxml.tests.test_sax-pysrc.html
+doc/html/api/lxml.tests.test_sax.ETreeSaxTestCase-class.html
+doc/html/api/lxml.tests.test_schematron-module.html
+doc/html/api/lxml.tests.test_schematron-pysrc.html
+doc/html/api/lxml.tests.test_schematron.ETreeSchematronTestCase-class.html
+doc/html/api/lxml.tests.test_threading-module.html
+doc/html/api/lxml.tests.test_threading-pysrc.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html
+doc/html/api/lxml.tests.test_threading.ThreadingTestCase-class.html
+doc/html/api/lxml.tests.test_unicode-module.html
+doc/html/api/lxml.tests.test_unicode-pysrc.html
+doc/html/api/lxml.tests.test_unicode.UnicodeTestCase-class.html
+doc/html/api/lxml.tests.test_xmlschema-module.html
+doc/html/api/lxml.tests.test_xmlschema-pysrc.html
+doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html
+doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase.simple_resolver-class.html
+doc/html/api/lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html
+doc/html/api/lxml.tests.test_xpathevaluator-module.html
+doc/html/api/lxml.tests.test_xpathevaluator-pysrc.html
+doc/html/api/lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html
+doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html
+doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html
+doc/html/api/lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html
+doc/html/api/lxml.tests.test_xslt-module.html
+doc/html/api/lxml.tests.test_xslt-pysrc.html
+doc/html/api/lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html
+doc/html/api/lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html
+doc/html/api/lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html
+doc/html/api/lxml.tests.test_xslt.ETreeXSLTTestCase-class.html
+doc/html/api/lxml.tests.test_xslt.Py3XSLTTestCase-class.html
+doc/html/api/lxml.usedoctest-module.html
+doc/html/api/lxml.usedoctest-pysrc.html
+doc/html/api/module-tree.html
+doc/html/api/redirect.html
+doc/html/api/str-class.html
+doc/html/api/toc-everything.html
+doc/html/api/toc-lxml-module.html
+doc/html/api/toc-lxml.ElementInclude-module.html
+doc/html/api/toc-lxml.builder-module.html
+doc/html/api/toc-lxml.cssselect-module.html
+doc/html/api/toc-lxml.doctestcompare-module.html
+doc/html/api/toc-lxml.etree-module.html
+doc/html/api/toc-lxml.html-module.html
+doc/html/api/toc-lxml.html.ElementSoup-module.html
+doc/html/api/toc-lxml.html.builder-module.html
+doc/html/api/toc-lxml.html.clean-module.html
+doc/html/api/toc-lxml.html.defs-module.html
+doc/html/api/toc-lxml.html.diff-module.html
+doc/html/api/toc-lxml.html.formfill-module.html
+doc/html/api/toc-lxml.html.html5parser-module.html
+doc/html/api/toc-lxml.html.soupparser-module.html
+doc/html/api/toc-lxml.html.usedoctest-module.html
+doc/html/api/toc-lxml.includes-module.html
+doc/html/api/toc-lxml.isoschematron-module.html
+doc/html/api/toc-lxml.objectify-module.html
+doc/html/api/toc-lxml.pyclasslookup-module.html
+doc/html/api/toc-lxml.sax-module.html
+doc/html/api/toc-lxml.tests-module.html
+doc/html/api/toc-lxml.tests.common_imports-module.html
+doc/html/api/toc-lxml.tests.test_builder-module.html
+doc/html/api/toc-lxml.tests.test_classlookup-module.html
+doc/html/api/toc-lxml.tests.test_css-module.html
+doc/html/api/toc-lxml.tests.test_dtd-module.html
+doc/html/api/toc-lxml.tests.test_elementtree-module.html
+doc/html/api/toc-lxml.tests.test_errors-module.html
+doc/html/api/toc-lxml.tests.test_etree-module.html
+doc/html/api/toc-lxml.tests.test_htmlparser-module.html
+doc/html/api/toc-lxml.tests.test_incremental_xmlfile-module.html
+doc/html/api/toc-lxml.tests.test_io-module.html
+doc/html/api/toc-lxml.tests.test_isoschematron-module.html
+doc/html/api/toc-lxml.tests.test_nsclasses-module.html
+doc/html/api/toc-lxml.tests.test_objectify-module.html
+doc/html/api/toc-lxml.tests.test_pyclasslookup-module.html
+doc/html/api/toc-lxml.tests.test_relaxng-module.html
+doc/html/api/toc-lxml.tests.test_sax-module.html
+doc/html/api/toc-lxml.tests.test_schematron-module.html
+doc/html/api/toc-lxml.tests.test_threading-module.html
+doc/html/api/toc-lxml.tests.test_unicode-module.html
+doc/html/api/toc-lxml.tests.test_xmlschema-module.html
+doc/html/api/toc-lxml.tests.test_xpathevaluator-module.html
+doc/html/api/toc-lxml.tests.test_xslt-module.html
+doc/html/api/toc-lxml.usedoctest-module.html
+doc/html/api/toc-xml.etree.ElementTree-module.html
+doc/html/api/toc.html
+doc/html/api/xml.etree.ElementTree-module.html
+doc/html/api/xml.etree.ElementTree-pysrc.html
+doc/html/api/xml.etree.ElementTree.Element-class.html
+doc/html/api/xml.etree.ElementTree.ElementTree-class.html
+doc/html/api/xml.etree.ElementTree.ParseError-class.html
+doc/html/api/xml.etree.ElementTree.QName-class.html
+doc/html/api/xml.etree.ElementTree.TreeBuilder-class.html
+doc/html/api/xml.etree.ElementTree.XMLParser-class.html
+doc/html/api/xml.etree.ElementTree._IterParseIterator-class.html
+doc/html/api/xml.etree.ElementTree._SimpleElementPath-class.html
+doc/licenses/BSD.txt
+doc/licenses/GPL.txt
+doc/licenses/ZopePublicLicense.txt
+doc/licenses/elementtree.txt
+doc/s5/Makefile
+doc/s5/lxml-ep2008.html
+doc/s5/lxml-ep2008.txt
+doc/s5/tagpython.png
+doc/s5/ep2008/atom-example.xml
+doc/s5/ep2008/atom.py
+doc/s5/ep2008/atom.rng
+doc/s5/ep2008/atomgen.py
+doc/s5/ep2008/proxies.png
+doc/s5/ui/default/blank.gif
+doc/s5/ui/default/bodybg.gif
+doc/s5/ui/default/framing.css
+doc/s5/ui/default/iepngfix.htc
+doc/s5/ui/default/lxml-logo64.png
+doc/s5/ui/default/opera.css
+doc/s5/ui/default/outline.css
+doc/s5/ui/default/pretty.css
+doc/s5/ui/default/print.css
+doc/s5/ui/default/s5-core.css
+doc/s5/ui/default/slides.css
+doc/s5/ui/default/slides.js
+doc/s5/ui/default/tagpython.png
+fake_pyrex/Pyrex/__init__.py
+fake_pyrex/Pyrex/Distutils/__init__.py
+fake_pyrex/Pyrex/Distutils/build_ext.py
+samples/simple-ns.xml
+samples/simple.xml
+src/local_doctest.py
+src/lxml/ElementInclude.py
+src/lxml/__init__.py
+src/lxml/_elementpath.py
+src/lxml/apihelpers.pxi
+src/lxml/builder.py
+src/lxml/classlookup.pxi
+src/lxml/cleanup.pxi
+src/lxml/cssselect.py
+src/lxml/cvarargs.pxd
+src/lxml/debug.pxi
+src/lxml/docloader.pxi
+src/lxml/doctestcompare.py
+src/lxml/dtd.pxi
+src/lxml/extensions.pxi
+src/lxml/iterparse.pxi
+src/lxml/lxml.etree.c
+src/lxml/lxml.etree.h
+src/lxml/lxml.etree.pyx
+src/lxml/lxml.etree_api.h
+src/lxml/lxml.objectify.c
+src/lxml/lxml.objectify.pyx
+src/lxml/nsclasses.pxi
+src/lxml/objectpath.pxi
+src/lxml/parser.pxi
+src/lxml/parsertarget.pxi
+src/lxml/proxy.pxi
+src/lxml/public-api.pxi
+src/lxml/pyclasslookup.py
+src/lxml/python.pxd
+src/lxml/readonlytree.pxi
+src/lxml/relaxng.pxi
+src/lxml/sax.py
+src/lxml/saxparser.pxi
+src/lxml/schematron.pxi
+src/lxml/serializer.pxi
+src/lxml/usedoctest.py
+src/lxml/xinclude.pxi
+src/lxml/xmlerror.pxi
+src/lxml/xmlid.pxi
+src/lxml/xmlschema.pxi
+src/lxml/xpath.pxi
+src/lxml/xslt.pxi
+src/lxml/xsltext.pxi
+src/lxml.egg-info/PKG-INFO
+src/lxml.egg-info/SOURCES.txt
+src/lxml.egg-info/dependency_links.txt
+src/lxml.egg-info/not-zip-safe
+src/lxml.egg-info/top_level.txt
+src/lxml/html/ElementSoup.py
+src/lxml/html/__init__.py
+src/lxml/html/_diffcommand.py
+src/lxml/html/_html5builder.py
+src/lxml/html/_setmixin.py
+src/lxml/html/builder.py
+src/lxml/html/clean.py
+src/lxml/html/defs.py
+src/lxml/html/diff.py
+src/lxml/html/formfill.py
+src/lxml/html/html5parser.py
+src/lxml/html/soupparser.py
+src/lxml/html/usedoctest.py
+src/lxml/html/tests/__init__.py
+src/lxml/html/tests/test_autolink.py
+src/lxml/html/tests/test_autolink.txt
+src/lxml/html/tests/test_basic.py
+src/lxml/html/tests/test_basic.txt
+src/lxml/html/tests/test_clean.py
+src/lxml/html/tests/test_clean.txt
+src/lxml/html/tests/test_clean_embed.txt
+src/lxml/html/tests/test_diff.py
+src/lxml/html/tests/test_diff.txt
+src/lxml/html/tests/test_elementsoup.py
+src/lxml/html/tests/test_feedparser_data.py
+src/lxml/html/tests/test_formfill.py
+src/lxml/html/tests/test_formfill.txt
+src/lxml/html/tests/test_forms.py
+src/lxml/html/tests/test_forms.txt
+src/lxml/html/tests/test_html5parser.py
+src/lxml/html/tests/test_rewritelinks.py
+src/lxml/html/tests/test_rewritelinks.txt
+src/lxml/html/tests/test_xhtml.py
+src/lxml/html/tests/test_xhtml.txt
+src/lxml/html/tests/transform_feedparser_data.py
+src/lxml/html/tests/feedparser-data/entry_content_applet.data
+src/lxml/html/tests/feedparser-data/entry_content_blink.data
+src/lxml/html/tests/feedparser-data/entry_content_crazy.data
+src/lxml/html/tests/feedparser-data/entry_content_embed.data
+src/lxml/html/tests/feedparser-data/entry_content_frame.data
+src/lxml/html/tests/feedparser-data/entry_content_iframe.data
+src/lxml/html/tests/feedparser-data/entry_content_link.data
+src/lxml/html/tests/feedparser-data/entry_content_meta.data
+src/lxml/html/tests/feedparser-data/entry_content_object.data
+src/lxml/html/tests/feedparser-data/entry_content_onabort.data
+src/lxml/html/tests/feedparser-data/entry_content_onblur.data
+src/lxml/html/tests/feedparser-data/entry_content_onchange.data
+src/lxml/html/tests/feedparser-data/entry_content_onclick.data
+src/lxml/html/tests/feedparser-data/entry_content_ondblclick.data
+src/lxml/html/tests/feedparser-data/entry_content_onerror.data
+src/lxml/html/tests/feedparser-data/entry_content_onfocus.data
+src/lxml/html/tests/feedparser-data/entry_content_onkeydown.data
+src/lxml/html/tests/feedparser-data/entry_content_onkeypress.data
+src/lxml/html/tests/feedparser-data/entry_content_onkeyup.data
+src/lxml/html/tests/feedparser-data/entry_content_onload.data
+src/lxml/html/tests/feedparser-data/entry_content_onmousedown.data
+src/lxml/html/tests/feedparser-data/entry_content_onmouseout.data
+src/lxml/html/tests/feedparser-data/entry_content_onmouseover.data
+src/lxml/html/tests/feedparser-data/entry_content_onmouseup.data
+src/lxml/html/tests/feedparser-data/entry_content_onreset.data
+src/lxml/html/tests/feedparser-data/entry_content_onresize.data
+src/lxml/html/tests/feedparser-data/entry_content_onsubmit.data
+src/lxml/html/tests/feedparser-data/entry_content_onunload.data
+src/lxml/html/tests/feedparser-data/entry_content_script.data
+src/lxml/html/tests/feedparser-data/entry_content_script_cdata.data
+src/lxml/html/tests/feedparser-data/entry_content_script_inline.data
+src/lxml/html/tests/feedparser-data/entry_content_style.data
+src/lxml/html/tests/hackers-org-data/background-image-plus.data
+src/lxml/html/tests/hackers-org-data/background-image-with-unicoded.data
+src/lxml/html/tests/hackers-org-data/downlevel-hidden.data
+src/lxml/html/tests/hackers-org-data/html-plus-time.data
+src/lxml/html/tests/hackers-org-data/javascript-link.data
+src/lxml/html/tests/hackers-org-data/style-comment.data
+src/lxml/html/tests/hackers-org-data/style-expression.data
+src/lxml/html/tests/hackers-org-data/style-import.data
+src/lxml/html/tests/hackers-org-data/style-js-tag.data
+src/lxml/html/tests/hackers-org-data/style-url-js.data
+src/lxml/html/tests/hackers-org-data/xml-data-island.data
+src/lxml/html/tests/hackers-org-data/xml-embedded-js.data
+src/lxml/includes/__init__.py
+src/lxml/includes/c14n.pxd
+src/lxml/includes/config.pxd
+src/lxml/includes/dtdvalid.pxd
+src/lxml/includes/etree_defs.h
+src/lxml/includes/etreepublic.pxd
+src/lxml/includes/htmlparser.pxd
+src/lxml/includes/lxml-version.h
+src/lxml/includes/relaxng.pxd
+src/lxml/includes/schematron.pxd
+src/lxml/includes/tree.pxd
+src/lxml/includes/uri.pxd
+src/lxml/includes/xinclude.pxd
+src/lxml/includes/xmlerror.pxd
+src/lxml/includes/xmlparser.pxd
+src/lxml/includes/xmlschema.pxd
+src/lxml/includes/xpath.pxd
+src/lxml/includes/xslt.pxd
+src/lxml/isoschematron/__init__.py
+src/lxml/isoschematron/resources/rng/iso-schematron.rng
+src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl
+src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl
+src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt
+src/lxml/tests/__init__.py
+src/lxml/tests/common_imports.py
+src/lxml/tests/shakespeare.html
+src/lxml/tests/test-document.xslt
+src/lxml/tests/test-string.xml
+src/lxml/tests/test.dtd
+src/lxml/tests/test.sch
+src/lxml/tests/test.xml
+src/lxml/tests/test.xsd
+src/lxml/tests/test1.rng
+src/lxml/tests/test1.xslt
+src/lxml/tests/test2.rng
+src/lxml/tests/test2.xslt
+src/lxml/tests/test_broken.xml
+src/lxml/tests/test_builder.py
+src/lxml/tests/test_classlookup.py
+src/lxml/tests/test_css.py
+src/lxml/tests/test_dtd.py
+src/lxml/tests/test_elementtree.py
+src/lxml/tests/test_errors.py
+src/lxml/tests/test_etree.py
+src/lxml/tests/test_htmlparser.py
+src/lxml/tests/test_import.xsd
+src/lxml/tests/test_inc.xsd
+src/lxml/tests/test_incremental_xmlfile.py
+src/lxml/tests/test_io.py
+src/lxml/tests/test_isoschematron.py
+src/lxml/tests/test_nsclasses.py
+src/lxml/tests/test_objectify.py
+src/lxml/tests/test_pyclasslookup.py
+src/lxml/tests/test_relaxng.py
+src/lxml/tests/test_sax.py
+src/lxml/tests/test_schematron.py
+src/lxml/tests/test_threading.py
+src/lxml/tests/test_unicode.py
+src/lxml/tests/test_xmlschema.py
+src/lxml/tests/test_xpathevaluator.py
+src/lxml/tests/test_xslt.py
+src/lxml/tests/include/test_xinclude.xml
\ No newline at end of file
c_attr = c_attr.next
return attributes
-cdef object __RE_XML_ENCODING
-__RE_XML_ENCODING = re.compile(
- ur'^(\s*<\?\s*xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\']\s*', re.U)
+cdef object __RE_XML_ENCODING = re.compile(
+ ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U)
-cdef object __REPLACE_XML_ENCODING
-__REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub
-
-cdef object __HAS_XML_ENCODING
-__HAS_XML_ENCODING = __RE_XML_ENCODING.match
+cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub
+cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match
cdef object _stripEncodingDeclaration(object xml_string):
# this is a hack to remove the XML encoding declaration from unicode
- return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)
+ return __REPLACE_XML_ENCODING(ur'\g<1>\g<2>', xml_string)
cdef bint _hasEncodingDeclaration(object xml_string):
# check if a (unicode) string has an XML encoding declaration
#ifndef LIBXML2_NEW_BUFFER
typedef xmlBuffer xmlBuf;
# define xmlBufContent(buf) xmlBufferContent(buf)
-# define xmlBufLength(buf) xmlBufferLength(buf)
+# define xmlBufUse(buf) xmlBufferLength(buf)
#endif
/* libexslt 1.1.25+ support EXSLT functions in XPath */
#ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "3.1.1"
+#define LXML_VERSION_STRING "3.1.2"
#endif
cdef const_xmlChar* xmlBufferContent(xmlBuffer* buf) nogil
cdef int xmlBufferLength(xmlBuffer* buf) nogil
cdef const_xmlChar* xmlBufContent(xmlBuf* buf) nogil # new in libxml2 2.9
- cdef size_t xmlBufLength(xmlBuf* buf) nogil # new in libxml2 2.9
+ cdef size_t xmlBufUse(xmlBuf* buf) nogil # new in libxml2 2.9
cdef int xmlKeepBlanksDefault(int val) nogil
cdef xmlChar* xmlNodeGetBase(xmlDoc* doc, xmlNode* node) nogil
cdef void xmlNodeSetBase(xmlNode* node, const_xmlChar* uri) nogil
-/* Generated by Cython 0.18 on Fri Mar 29 21:57:33 2013 */
+/* Generated by Cython 0.18 on Fri Apr 12 07:15:01 2013 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
__pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":631
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":634
* old_writer._close(raise_on_error)
*
* cdef enum _IncrementalFileWriterStatus: # <<<<<<<<<<<<<<
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2547
* self._storeTags(item, seen)
*
- * cdef int cacheTags(self, _Document doc, bint force_into_dict=False) except -1: # <<<<<<<<<<<<<<
+ * cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1: # <<<<<<<<<<<<<<
* """
* Look up the tag names in the doc dict to enable string pointer comparisons.
*/
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":640
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":643
* @cython.final
* @cython.internal
* cdef class _IncrementalFileWriter: # <<<<<<<<<<<<<<
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2848
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2852
* PI = ProcessingInstruction
*
* cdef class CDATA: # <<<<<<<<<<<<<<
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":587
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":590
* # incremental serialisation
*
* cdef class xmlfile: # <<<<<<<<<<<<<<
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2737
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2741
* return NULL
*
* cdef class ElementTextIterator: # <<<<<<<<<<<<<<
};
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":872
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":875
* @cython.final
* @cython.internal
* cdef class _FileWriterElement: # <<<<<<<<<<<<<<
static struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyPIProxy *__pyx_vtabptr_4lxml_5etree__ModifyContentOnlyPIProxy;
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3236
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3240
* pass
*
* cdef class _Validator: # <<<<<<<<<<<<<<
static PyObject *__pyx_f_4lxml_5etree_17XSLTAccessControl__optval(struct __pyx_obj_4lxml_5etree_XSLTAccessControl *, xsltSecurityOption);
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":640
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":643
* @cython.final
* @cython.internal
* cdef class _IncrementalFileWriter: # <<<<<<<<<<<<<<
xmlNode *(*_nextNodeMatchTag)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *);
};
static struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *__pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator;
+static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *);
+static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/classlookup.pxi":312
static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *);
static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, PyObject *);
static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, PyObject *, PyObject *);
-static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, struct LxmlDocument *, struct __pyx_opt_args_4lxml_5etree_16_MultiTagMatcher_cacheTags *__pyx_optional_args);
+static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, struct LxmlDocument *, struct __pyx_opt_args_4lxml_5etree_16_MultiTagMatcher_cacheTags *__pyx_optional_args);
static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, xmlNode *);
static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribute(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, xmlAttr *);
static char __pyx_k_17[] = "Input object has no document: %s";
static char __pyx_k_18[] = "Input object has no element: %s";
static char __pyx_k_19[] = "Invalid attribute dictionary: %s";
-static char __pyx_k_20[] = "\\g<1>";
+static char __pyx_k_20[] = "\\g<1>\\g<2>";
static char __pyx_k_21[] = "";
static char __pyx_k_22[] = "%s:%s";
static char __pyx_k_23[] = "attempt to assign sequence of size %d to extended slice of size %d";
static char __pyx_k_486[] = "Error during C14N serialisation.\n ";
static char __pyx_k_487[] = "[0-9]+";
static char __pyx_k_489[] = "Unknown libxml2 version: %s";
-static char __pyx_k_490[] = "^(\\s*<\\?\\s*xml[^>]+)\\s+encoding\\s*=\\s*[\"\\'][^\"\\']*[\"\\']\\s*";
+static char __pyx_k_490[] = "^(<\\?xml[^>]+)\\s+encoding\\s*=\\s*[\"\\'][^\"\\']*[\"\\'](\\s*\\?>|)";
static char __pyx_k_492[] = "/home/stefan/source/Python/lxml/lxml-release/src/lxml/xmlerror.pxi";
static char __pyx_k_496[] = "Libxml2 error levels";
static char __pyx_k_497[] = "Libxml2 error domains";
static char __pyx_k_656[] = "Base class of all Schematron errors.\n ";
static char __pyx_k_657[] = "Error while parsing an XML document as Schematron schema.\n ";
static char __pyx_k_658[] = "Error while validating an XML document with a Schematron schema.\n ";
-static char __pyx_k_659[] = "XML (line 2946)";
+static char __pyx_k_659[] = "XML (line 2950)";
static char __pyx_k_660[] = "XML(text, parser=None, base_url=None)\n\n Parses an XML document or fragment from a string constant.\n Returns the root node (or the result returned by a parser target).\n This function can be used to embed \"XML literals\" in Python code,\n like in\n\n >>> root = etree.XML(\"<root><test/></root>\")\n\n To override the parser with a different ``XMLParser`` you can pass it to\n the ``parser`` keyword argument.\n\n The ``base_url`` keyword argument allows to set the original base URL of\n the document to support relative Paths when looking up external entities\n (DTD, XInclude, ...).\n ";
static char __pyx_k__Ok[] = "Ok";
static char __pyx_k__PI[] = "PI";
static PyObject *__pyx_n_u__href;
static PyObject *__pyx_n_b__html;
static PyObject *__pyx_n_s__html;
-static PyObject *__pyx_n_u__html;
static PyObject *__pyx_n_s__huge_tree;
static PyObject *__pyx_n_u__i;
static PyObject *__pyx_n_s__id;
static PyObject *__pyx_n_b__test;
static PyObject *__pyx_n_s__test;
static PyObject *__pyx_n_s__text;
-static PyObject *__pyx_n_u__text;
static PyObject *__pyx_n_s__tostring;
static PyObject *__pyx_n_s__tostringlist;
static PyObject *__pyx_n_s__tounicode;
static PyObject *__pyx_n_s__version;
static PyObject *__pyx_n_s__warn;
static PyObject *__pyx_n_s__warnings;
-static PyObject *__pyx_n_u__wb;
+static PyObject *__pyx_n_s__wb;
static PyObject *__pyx_n_s__with_comments;
static PyObject *__pyx_n_s__with_tail;
static PyObject *__pyx_n_s__write;
-static PyObject *__pyx_n_u__write;
static PyObject *__pyx_n_s__write_declaration;
static PyObject *__pyx_n_s__write_file;
static PyObject *__pyx_n_u__write_file;
* c_attr = c_attr.next
* return attributes # <<<<<<<<<<<<<<
*
- * cdef object __RE_XML_ENCODING
+ * cdef object __RE_XML_ENCODING = re.compile(
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":588
- * __HAS_XML_ENCODING = __RE_XML_ENCODING.match
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":584
+ * cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match
*
* cdef object _stripEncodingDeclaration(object xml_string): # <<<<<<<<<<<<<<
* # this is a hack to remove the XML encoding declaration from unicode
- * return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)
+ * return __REPLACE_XML_ENCODING(ur'\g<1>\g<2>', xml_string)
*/
static PyObject *__pyx_f_4lxml_5etree__stripEncodingDeclaration(PyObject *__pyx_v_xml_string) {
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_stripEncodingDeclaration", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":590
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":586
* cdef object _stripEncodingDeclaration(object xml_string):
* # this is a hack to remove the XML encoding declaration from unicode
- * return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string) # <<<<<<<<<<<<<<
+ * return __REPLACE_XML_ENCODING(ur'\g<1>\g<2>', xml_string) # <<<<<<<<<<<<<<
*
* cdef bint _hasEncodingDeclaration(object xml_string):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)__pyx_kp_u_20));
PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_kp_u_20));
__Pyx_INCREF(__pyx_v_xml_string);
PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_xml_string);
__Pyx_GIVEREF(__pyx_v_xml_string);
- __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":592
- * return __REPLACE_XML_ENCODING(ur'\g<1>', xml_string)
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":588
+ * return __REPLACE_XML_ENCODING(ur'\g<1>\g<2>', xml_string)
*
* cdef bint _hasEncodingDeclaration(object xml_string): # <<<<<<<<<<<<<<
* # check if a (unicode) string has an XML encoding declaration
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_hasEncodingDeclaration", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":594
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":590
* cdef bint _hasEncodingDeclaration(object xml_string):
* # check if a (unicode) string has an XML encoding declaration
* return __HAS_XML_ENCODING(xml_string) is not None # <<<<<<<<<<<<<<
*
* cdef inline bint _hasText(xmlNode* c_node):
*/
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_xml_string);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_xml_string);
__Pyx_GIVEREF(__pyx_v_xml_string);
- __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___HAS_XML_ENCODING, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree___HAS_XML_ENCODING, ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__pyx_t_3 = (__pyx_t_2 != Py_None);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":596
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":592
* return __HAS_XML_ENCODING(xml_string) is not None
*
* cdef inline bint _hasText(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_hasText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":597
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":593
*
* cdef inline bint _hasText(xmlNode* c_node):
* return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":599
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":595
* return c_node is not NULL and _textNodeOrSkip(c_node.children) is not NULL
*
* cdef inline bint _hasTail(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_hasTail", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":600
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":596
*
* cdef inline bint _hasTail(xmlNode* c_node):
* return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":602
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":598
* return c_node is not NULL and _textNodeOrSkip(c_node.next) is not NULL
*
* cdef _collectText(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_collectText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":613
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":609
* cdef xmlNode* c_node_cur
* # check for multiple text nodes
* scount = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_scount = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":614
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":610
* # check for multiple text nodes
* scount = 0
* c_text = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_c_text = NULL;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":615
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":611
* scount = 0
* c_text = NULL
* c_node_cur = c_node = _textNodeOrSkip(c_node) # <<<<<<<<<<<<<<
__pyx_v_c_node_cur = __pyx_t_1;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":616
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":612
* c_text = NULL
* c_node_cur = c_node = _textNodeOrSkip(c_node)
* while c_node_cur is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node_cur != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":617
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":613
* c_node_cur = c_node = _textNodeOrSkip(c_node)
* while c_node_cur is not NULL:
* if c_node_cur.content[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_node_cur->content[0]) != '\x00');
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":618
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":614
* while c_node_cur is not NULL:
* if c_node_cur.content[0] != c'\0':
* c_text = c_node_cur.content # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":619
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":615
* if c_node_cur.content[0] != c'\0':
* c_text = c_node_cur.content
* scount += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_scount = (__pyx_v_scount + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":620
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":616
* c_text = c_node_cur.content
* scount += 1
* c_node_cur = _textNodeOrSkip(c_node_cur.next) # <<<<<<<<<<<<<<
__pyx_v_c_node_cur = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node_cur->next);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":623
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":619
*
* # handle two most common cases first
* if c_text is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_text == NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":624
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":620
* # handle two most common cases first
* if c_text is NULL:
* return '' if scount > 0 else None # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":625
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":621
* if c_text is NULL:
* return '' if scount > 0 else None
* if scount == 1: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_scount == 1);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":626
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":622
* return '' if scount > 0 else None
* if scount == 1:
* return funicode(c_text) # <<<<<<<<<<<<<<
* # the rest is not performance critical anymore
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_text); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":629
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":625
*
* # the rest is not performance critical anymore
* result = b'' # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)__pyx_kp_b_21));
__pyx_v_result = __pyx_kp_b_21;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":630
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":626
* # the rest is not performance critical anymore
* result = b''
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":631
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":627
* result = b''
* while c_node is not NULL:
* result += <unsigned char*>c_node.content # <<<<<<<<<<<<<<
* c_node = _textNodeOrSkip(c_node.next)
* return funicode(<const_xmlChar*><unsigned char*>result)
*/
- __pyx_t_4 = __Pyx_PyBytes_FromUString(((unsigned char *)__pyx_v_c_node->content)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyBytes_FromUString(((unsigned char *)__pyx_v_c_node->content)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
- __pyx_t_5 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyNumber_InPlaceAdd(((PyObject *)__pyx_v_result), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__Pyx_DECREF(((PyObject *)__pyx_v_result));
__pyx_v_result = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":632
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":628
* while c_node is not NULL:
* result += <unsigned char*>c_node.content
* c_node = _textNodeOrSkip(c_node.next) # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":633
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":629
* result += <unsigned char*>c_node.content
* c_node = _textNodeOrSkip(c_node.next)
* return funicode(<const_xmlChar*><unsigned char*>result) # <<<<<<<<<<<<<<
* cdef void _removeText(xmlNode* c_node):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_6 = __Pyx_PyBytes_AsUString(((PyObject *)__pyx_v_result)); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_funicode(((const xmlChar *)((unsigned char *)__pyx_t_6))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyBytes_AsUString(((PyObject *)__pyx_v_result)); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_funicode(((const xmlChar *)((unsigned char *)__pyx_t_6))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_r = __pyx_t_5;
__pyx_t_5 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":635
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":631
* return funicode(<const_xmlChar*><unsigned char*>result)
*
* cdef void _removeText(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("_removeText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":641
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":637
* """
* cdef xmlNode* c_next
* c_node = _textNodeOrSkip(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":642
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":638
* cdef xmlNode* c_next
* c_node = _textNodeOrSkip(c_node)
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":643
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":639
* c_node = _textNodeOrSkip(c_node)
* while c_node is not NULL:
* c_next = _textNodeOrSkip(c_node.next) # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_node->next);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":644
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":640
* while c_node is not NULL:
* c_next = _textNodeOrSkip(c_node.next)
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":645
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":641
* c_next = _textNodeOrSkip(c_node.next)
* tree.xmlUnlinkNode(c_node)
* tree.xmlFreeNode(c_node) # <<<<<<<<<<<<<<
*/
xmlFreeNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":646
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":642
* tree.xmlUnlinkNode(c_node)
* tree.xmlFreeNode(c_node)
* c_node = c_next # <<<<<<<<<<<<<<
__Pyx_RefNannyFinishContext();
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":648
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":644
* c_node = c_next
*
* cdef int _setNodeText(xmlNode* c_node, value) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_setNodeText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":651
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":647
* cdef xmlNode* c_text_node
* # remove all text nodes at the start first
* _removeText(c_node.children) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->children);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":652
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":648
* # remove all text nodes at the start first
* _removeText(c_node.children)
* if value is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_value == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":653
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":649
* _removeText(c_node.children)
* if value is None:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":655
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":651
* return 0
* # now add new text node with value at start
* if python._isString(value): # <<<<<<<<<<<<<<
__pyx_t_1 = _isString(__pyx_v_value);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":656
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":652
* # now add new text node with value at start
* if python._isString(value):
* text = _utf8(value) # <<<<<<<<<<<<<<
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text))
* elif isinstance(value, CDATA):
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 652; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_text = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":657
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":653
* if python._isString(value):
* text = _utf8(value)
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text)) # <<<<<<<<<<<<<<
goto __pyx_L4;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":658
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":654
* text = _utf8(value)
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text))
* elif isinstance(value, CDATA): # <<<<<<<<<<<<<<
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_value, ((PyObject*)__pyx_ptype_4lxml_5etree_CDATA));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":660
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":656
* elif isinstance(value, CDATA):
* c_text_node = tree.xmlNewCDataBlock(
* c_node.doc, _xcstr((<CDATA>value)._utf8_data), # <<<<<<<<<<<<<<
__pyx_t_2 = ((PyObject *)((struct __pyx_obj_4lxml_5etree_CDATA *)__pyx_v_value)->_utf8_data);
__Pyx_INCREF(__pyx_t_2);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":661
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":657
* c_text_node = tree.xmlNewCDataBlock(
* c_node.doc, _xcstr((<CDATA>value)._utf8_data),
* python.PyBytes_GET_SIZE((<CDATA>value)._utf8_data)) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":664
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":660
* else:
* # this will raise the right error
* _utf8(value) # <<<<<<<<<<<<<<
* return -1
* if c_node.children is NULL:
*/
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":665
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":661
* # this will raise the right error
* _utf8(value)
* return -1 # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":666
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":662
* _utf8(value)
* return -1
* if c_node.children is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node->children == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":667
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":663
* return -1
* if c_node.children is NULL:
* tree.xmlAddChild(c_node, c_text_node) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":669
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":665
* tree.xmlAddChild(c_node, c_text_node)
* else:
* tree.xmlAddPrevSibling(c_node.children, c_text_node) # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":670
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":666
* else:
* tree.xmlAddPrevSibling(c_node.children, c_text_node)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":672
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":668
* return 0
*
* cdef int _setTailText(xmlNode* c_node, value) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_setTailText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":675
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":671
* cdef xmlNode* c_text_node
* # remove all text nodes at the start first
* _removeText(c_node.next) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__removeText(__pyx_v_c_node->next);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":676
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":672
* # remove all text nodes at the start first
* _removeText(c_node.next)
* if value is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_value == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":677
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":673
* _removeText(c_node.next)
* if value is None:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":678
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":674
* if value is None:
* return 0
* text = _utf8(value) # <<<<<<<<<<<<<<
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text))
* # XXX what if we're the top element?
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 678; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_text = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":679
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":675
* return 0
* text = _utf8(value)
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text)) # <<<<<<<<<<<<<<
*/
__pyx_v_c_text_node = xmlNewDocText(__pyx_v_c_node->doc, (const xmlChar*)PyBytes_AS_STRING(((PyObject *)__pyx_v_text)));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":681
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":677
* c_text_node = tree.xmlNewDocText(c_node.doc, _xcstr(text))
* # XXX what if we're the top element?
* tree.xmlAddNextSibling(c_node, c_text_node) # <<<<<<<<<<<<<<
*/
xmlAddNextSibling(__pyx_v_c_node, __pyx_v_c_text_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":682
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":678
* # XXX what if we're the top element?
* tree.xmlAddNextSibling(c_node, c_text_node)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":684
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":680
* return 0
*
* cdef bytes _resolveQNameText(_Element element, value): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_resolveQNameText", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":686
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":682
* cdef bytes _resolveQNameText(_Element element, value):
* cdef xmlNs* c_ns
* ns, tag = _getNsTag(value) # <<<<<<<<<<<<<<
* if ns is None:
* return tag
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyTuple_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
__pyx_t_2 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_2);
__Pyx_INCREF(__pyx_t_3);
#else
- __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else if (1) {
- __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else
{
Py_ssize_t index = -1;
- __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
__Pyx_GOTREF(__pyx_t_2);
index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
__Pyx_GOTREF(__pyx_t_3);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_5 = NULL;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L4_unpacking_done;
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_t_5 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L4_unpacking_done:;
}
__pyx_v_ns = __pyx_t_2;
__pyx_v_tag = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":687
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":683
* cdef xmlNs* c_ns
* ns, tag = _getNsTag(value)
* if ns is None: # <<<<<<<<<<<<<<
__pyx_t_6 = (__pyx_v_ns == Py_None);
if (__pyx_t_6) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":688
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":684
* ns, tag = _getNsTag(value)
* if ns is None:
* return tag # <<<<<<<<<<<<<<
* c_ns = element._doc._findOrBuildNodeNs(
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
- if (!(likely(PyBytes_CheckExact(__pyx_v_tag))||((__pyx_v_tag) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_tag)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_tag))||((__pyx_v_tag) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_tag)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_INCREF(__pyx_v_tag);
__pyx_r = ((PyObject*)__pyx_v_tag);
goto __pyx_L0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":691
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":687
* else:
* c_ns = element._doc._findOrBuildNodeNs(
* element._c_node, _xcstr(ns), NULL, 0) # <<<<<<<<<<<<<<
* return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
*
*/
- __pyx_t_7 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns), NULL, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 690; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = __pyx_f_4lxml_5etree_9_Document__findOrBuildNodeNs(__pyx_v_element->_doc, __pyx_v_element->_c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_ns), NULL, 0); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 686; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_ns = __pyx_t_7;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":692
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":688
* c_ns = element._doc._findOrBuildNodeNs(
* element._c_node, _xcstr(ns), NULL, 0)
* return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag)) # <<<<<<<<<<<<<<
* cdef inline bint _hasChild(xmlNode* c_node):
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
- __pyx_t_1 = ((PyObject *)PyBytes_FromFormat(__pyx_k_22, __pyx_v_c_ns->prefix, PyBytes_AS_STRING(__pyx_v_tag))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 692; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)PyBytes_FromFormat(__pyx_k_22, __pyx_v_c_ns->prefix, PyBytes_AS_STRING(__pyx_v_tag))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":694
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":690
* return python.PyBytes_FromFormat('%s:%s', c_ns.prefix, _cstr(tag))
*
* cdef inline bint _hasChild(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_hasChild", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":695
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":691
*
* cdef inline bint _hasChild(xmlNode* c_node):
* return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":697
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":693
* return c_node is not NULL and _findChildForwards(c_node, 0) is not NULL
*
* cdef inline Py_ssize_t _countElements(xmlNode* c_node): # <<<<<<<<<<<<<<
xmlNode *__pyx_t_2;
__Pyx_RefNannySetupContext("_countElements", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":700
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":696
* u"Counts the elements within the following siblings and the node itself."
* cdef Py_ssize_t count
* count = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_count = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":701
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":697
* cdef Py_ssize_t count
* count = 0
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":702
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":698
* count = 0
* while c_node is not NULL:
* if _isElement(c_node): # <<<<<<<<<<<<<<
__pyx_t_1 = _isElement(__pyx_v_c_node);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":703
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":699
* while c_node is not NULL:
* if _isElement(c_node):
* count += 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":704
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":700
* if _isElement(c_node):
* count += 1
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_2;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":705
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":701
* count += 1
* c_node = c_node.next
* return count # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":707
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":703
* return count
*
* cdef int _findChildSlice( # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_findChildSlice", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":715
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":711
* pointer arguments.
* """
* cdef Py_ssize_t start = 0, stop = 0, childcount # <<<<<<<<<<<<<<
__pyx_v_start = 0;
__pyx_v_stop = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":716
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":712
* """
* cdef Py_ssize_t start = 0, stop = 0, childcount
* childcount = _countElements(c_parent.children) # <<<<<<<<<<<<<<
*/
__pyx_v_childcount = __pyx_f_4lxml_5etree__countElements(__pyx_v_c_parent->children);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":717
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":713
* cdef Py_ssize_t start = 0, stop = 0, childcount
* childcount = _countElements(c_parent.children)
* if childcount == 0: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_childcount == 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":718
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":714
* childcount = _countElements(c_parent.children)
* if childcount == 0:
* c_start_node[0] = NULL # <<<<<<<<<<<<<<
*/
(__pyx_v_c_start_node[0]) = NULL;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":719
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":715
* if childcount == 0:
* c_start_node[0] = NULL
* c_length[0] = 0 # <<<<<<<<<<<<<<
*/
(__pyx_v_c_length[0]) = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":720
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":716
* c_start_node[0] = NULL
* c_length[0] = 0
* if sliceobject.step is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PySliceObject*)__pyx_v_sliceobject)->step == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":721
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":717
* c_length[0] = 0
* if sliceobject.step is None:
* c_step[0] = 1 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":723
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":719
* c_step[0] = 1
* else:
* python._PyEval_SliceIndex(sliceobject.step, c_step) # <<<<<<<<<<<<<<
*/
__pyx_t_2 = ((PySliceObject*)__pyx_v_sliceobject)->step;
__Pyx_INCREF(__pyx_t_2);
- __pyx_t_3 = _PyEval_SliceIndex(__pyx_t_2, __pyx_v_c_step); if (unlikely(__pyx_t_3 == 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = _PyEval_SliceIndex(__pyx_t_2, __pyx_v_c_step); if (unlikely(__pyx_t_3 == 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":724
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":720
* else:
* python._PyEval_SliceIndex(sliceobject.step, c_step)
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":726
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":722
* return 0
* python.PySlice_GetIndicesEx(
* sliceobject, childcount, &start, &stop, c_step, c_length) # <<<<<<<<<<<<<<
* if start > childcount / 2:
* c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
*/
- __pyx_t_3 = _lx_PySlice_GetIndicesEx(((PyObject *)__pyx_v_sliceobject), __pyx_v_childcount, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_c_step, __pyx_v_c_length); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = _lx_PySlice_GetIndicesEx(((PyObject *)__pyx_v_sliceobject), __pyx_v_childcount, (&__pyx_v_start), (&__pyx_v_stop), __pyx_v_c_step, __pyx_v_c_length); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":727
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":723
* python.PySlice_GetIndicesEx(
* sliceobject, childcount, &start, &stop, c_step, c_length)
* if start > childcount / 2: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_start > __Pyx_div_Py_ssize_t(__pyx_v_childcount, 2));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":728
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":724
* sliceobject, childcount, &start, &stop, c_step, c_length)
* if start > childcount / 2:
* c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":730
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":726
* c_start_node[0] = _findChildBackwards(c_parent, childcount - start - 1)
* else:
* c_start_node[0] = _findChild(c_parent, start) # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":731
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":727
* else:
* c_start_node[0] = _findChild(c_parent, start)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":733
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":729
* return 0
*
* cdef bint _isFullSlice(slice sliceobject): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_isFullSlice", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":736
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":732
* u"""Conservative guess if this slice is a full slice as in ``s[:]``.
* """
* cdef Py_ssize_t step = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_step = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":737
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":733
* """
* cdef Py_ssize_t step = 0
* if sliceobject is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_sliceobject == ((PyObject*)Py_None));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":738
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":734
* cdef Py_ssize_t step = 0
* if sliceobject is None:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":739
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":735
* if sliceobject is None:
* return 0
* if sliceobject.start is None and \ # <<<<<<<<<<<<<<
__pyx_t_1 = (((PySliceObject*)__pyx_v_sliceobject)->start == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":740
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":736
* return 0
* if sliceobject.start is None and \
* sliceobject.stop is None: # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":741
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":737
* if sliceobject.start is None and \
* sliceobject.stop is None:
* if sliceobject.step is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (((PySliceObject*)__pyx_v_sliceobject)->step == Py_None);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":742
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":738
* sliceobject.stop is None:
* if sliceobject.step is None:
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":743
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":739
* if sliceobject.step is None:
* return 1
* python._PyEval_SliceIndex(sliceobject.step, &step) # <<<<<<<<<<<<<<
*/
__pyx_t_4 = ((PySliceObject*)__pyx_v_sliceobject)->step;
__Pyx_INCREF(__pyx_t_4);
- __pyx_t_5 = _PyEval_SliceIndex(__pyx_t_4, (&__pyx_v_step)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = _PyEval_SliceIndex(__pyx_t_4, (&__pyx_v_step)); if (unlikely(__pyx_t_5 == 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":744
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":740
* return 1
* python._PyEval_SliceIndex(sliceobject.step, &step)
* if step == 1: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_step == 1);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":745
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":741
* python._PyEval_SliceIndex(sliceobject.step, &step)
* if step == 1:
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":746
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":742
* if step == 1:
* return 1
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":747
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":743
* return 1
* return 0
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":749
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":745
* return 0
*
* cdef _collectChildren(_Element element): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_collectChildren", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":751
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":747
* cdef _collectChildren(_Element element):
* cdef xmlNode* c_node
* cdef list result = [] # <<<<<<<<<<<<<<
* c_node = element._c_node.children
* if c_node is not NULL:
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_result = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":752
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":748
* cdef xmlNode* c_node
* cdef list result = []
* c_node = element._c_node.children # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_element->_c_node->children;
__pyx_v_c_node = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":753
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":749
* cdef list result = []
* c_node = element._c_node.children
* if c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_node != NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":754
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":750
* c_node = element._c_node.children
* if c_node is not NULL:
* if not _isElement(c_node): # <<<<<<<<<<<<<<
__pyx_t_3 = (!_isElement(__pyx_v_c_node));
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":755
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":751
* if c_node is not NULL:
* if not _isElement(c_node):
* c_node = _nextElement(c_node) # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":756
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":752
* if not _isElement(c_node):
* c_node = _nextElement(c_node)
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_node != NULL);
if (!__pyx_t_3) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":757
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":753
* c_node = _nextElement(c_node)
* while c_node is not NULL:
* result.append(_elementFactory(element._doc, c_node)) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = ((PyObject *)__pyx_v_element->_doc);
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_5 = PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyList_Append(__pyx_v_result, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":758
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":754
* while c_node is not NULL:
* result.append(_elementFactory(element._doc, c_node))
* c_node = _nextElement(c_node) # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":759
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":755
* result.append(_elementFactory(element._doc, c_node))
* c_node = _nextElement(c_node)
* return result # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":761
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":757
* return result
*
* cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("_findChild", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":762
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":758
*
* cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
* if index < 0: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_index < 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":763
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":759
* cdef inline xmlNode* _findChild(xmlNode* c_node, Py_ssize_t index):
* if index < 0:
* return _findChildBackwards(c_node, -index - 1) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":765
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":761
* return _findChildBackwards(c_node, -index - 1)
* else:
* return _findChildForwards(c_node, index) # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":767
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":763
* return _findChildForwards(c_node, index)
*
* cdef inline xmlNode* _findChildForwards(xmlNode* c_node, Py_ssize_t index): # <<<<<<<<<<<<<<
int __pyx_t_2;
__Pyx_RefNannySetupContext("_findChildForwards", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":772
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":768
* cdef xmlNode* c_child
* cdef Py_ssize_t c
* c_child = c_node.children # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->children;
__pyx_v_c_child = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":773
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":769
* cdef Py_ssize_t c
* c_child = c_node.children
* c = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_c = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":774
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":770
* c_child = c_node.children
* c = 0
* while c_child is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_child != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":775
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":771
* c = 0
* while c_child is not NULL:
* if _isElement(c_child): # <<<<<<<<<<<<<<
__pyx_t_2 = _isElement(__pyx_v_c_child);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":776
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":772
* while c_child is not NULL:
* if _isElement(c_child):
* if c == index: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c == __pyx_v_index);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":777
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":773
* if _isElement(c_child):
* if c == index:
* return c_child # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":778
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":774
* if c == index:
* return c_child
* c += 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":779
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":775
* return c_child
* c += 1
* c_child = c_child.next # <<<<<<<<<<<<<<
__pyx_v_c_child = __pyx_t_1;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":780
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":776
* c += 1
* c_child = c_child.next
* return NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":782
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":778
* return NULL
*
* cdef inline xmlNode* _findChildBackwards(xmlNode* c_node, Py_ssize_t index): # <<<<<<<<<<<<<<
int __pyx_t_2;
__Pyx_RefNannySetupContext("_findChildBackwards", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":788
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":784
* cdef xmlNode* c_child
* cdef Py_ssize_t c
* c_child = c_node.last # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->last;
__pyx_v_c_child = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":789
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":785
* cdef Py_ssize_t c
* c_child = c_node.last
* c = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_c = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":790
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":786
* c_child = c_node.last
* c = 0
* while c_child is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_child != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":791
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":787
* c = 0
* while c_child is not NULL:
* if _isElement(c_child): # <<<<<<<<<<<<<<
__pyx_t_2 = _isElement(__pyx_v_c_child);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":792
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":788
* while c_child is not NULL:
* if _isElement(c_child):
* if c == index: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c == __pyx_v_index);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":793
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":789
* if _isElement(c_child):
* if c == index:
* return c_child # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":794
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":790
* if c == index:
* return c_child
* c += 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":795
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":791
* return c_child
* c += 1
* c_child = c_child.prev # <<<<<<<<<<<<<<
__pyx_v_c_child = __pyx_t_1;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":796
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":792
* c += 1
* c_child = c_child.prev
* return NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":798
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":794
* return NULL
*
* cdef inline xmlNode* _textNodeOrSkip(xmlNode* c_node) nogil: # <<<<<<<<<<<<<<
int __pyx_t_3;
xmlNode *__pyx_t_4;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":805
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":801
* nodes.
* """
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":806
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":802
* """
* while c_node is not NULL:
* if c_node.type == tree.XML_TEXT_NODE or \ # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node->type == XML_TEXT_NODE);
if (!__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":807
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":803
* while c_node is not NULL:
* if c_node.type == tree.XML_TEXT_NODE or \
* c_node.type == tree.XML_CDATA_SECTION_NODE: # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":808
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":804
* if c_node.type == tree.XML_TEXT_NODE or \
* c_node.type == tree.XML_CDATA_SECTION_NODE:
* return c_node # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":809
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":805
* c_node.type == tree.XML_CDATA_SECTION_NODE:
* return c_node
* elif c_node.type == tree.XML_XINCLUDE_START or \ # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_node->type == XML_XINCLUDE_START);
if (!__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":810
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":806
* return c_node
* elif c_node.type == tree.XML_XINCLUDE_START or \
* c_node.type == tree.XML_XINCLUDE_END: # <<<<<<<<<<<<<<
}
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":811
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":807
* elif c_node.type == tree.XML_XINCLUDE_START or \
* c_node.type == tree.XML_XINCLUDE_END:
* c_node = c_node.next # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":813
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":809
* c_node = c_node.next
* else:
* return NULL # <<<<<<<<<<<<<<
__pyx_L5:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":814
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":810
* else:
* return NULL
* return NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":816
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":812
* return NULL
*
* cdef inline xmlNode* _nextElement(xmlNode* c_node): # <<<<<<<<<<<<<<
xmlNode *__pyx_t_2;
__Pyx_RefNannySetupContext("_nextElement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":819
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":815
* u"""Given a node, find the next sibling that is an element.
* """
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":820
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":816
* """
* if c_node is NULL:
* return NULL # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":821
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":817
* if c_node is NULL:
* return NULL
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->next;
__pyx_v_c_node = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":822
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":818
* return NULL
* c_node = c_node.next
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":823
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":819
* c_node = c_node.next
* while c_node is not NULL:
* if _isElement(c_node): # <<<<<<<<<<<<<<
__pyx_t_1 = _isElement(__pyx_v_c_node);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":824
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":820
* while c_node is not NULL:
* if _isElement(c_node):
* return c_node # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":825
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":821
* if _isElement(c_node):
* return c_node
* c_node = c_node.next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_2;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":826
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":822
* return c_node
* c_node = c_node.next
* return NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":828
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":824
* return NULL
*
* cdef inline xmlNode* _previousElement(xmlNode* c_node): # <<<<<<<<<<<<<<
xmlNode *__pyx_t_2;
__Pyx_RefNannySetupContext("_previousElement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":831
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":827
* u"""Given a node, find the next sibling that is an element.
* """
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":832
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":828
* """
* if c_node is NULL:
* return NULL # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":833
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":829
* if c_node is NULL:
* return NULL
* c_node = c_node.prev # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->prev;
__pyx_v_c_node = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":834
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":830
* return NULL
* c_node = c_node.prev
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":835
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":831
* c_node = c_node.prev
* while c_node is not NULL:
* if _isElement(c_node): # <<<<<<<<<<<<<<
__pyx_t_1 = _isElement(__pyx_v_c_node);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":836
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":832
* while c_node is not NULL:
* if _isElement(c_node):
* return c_node # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":837
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":833
* if _isElement(c_node):
* return c_node
* c_node = c_node.prev # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_t_2;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":838
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":834
* return c_node
* c_node = c_node.prev
* return NULL # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":840
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":836
* return NULL
*
* cdef inline xmlNode* _parentElement(xmlNode* c_node): # <<<<<<<<<<<<<<
xmlNode *__pyx_t_4;
__Pyx_RefNannySetupContext("_parentElement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":842
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":838
* cdef inline xmlNode* _parentElement(xmlNode* c_node):
* u"Given a node, find the parent element."
* if c_node is NULL or not _isElement(c_node): # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":843
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":839
* u"Given a node, find the parent element."
* if c_node is NULL or not _isElement(c_node):
* return NULL # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":844
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":840
* if c_node is NULL or not _isElement(c_node):
* return NULL
* c_node = c_node.parent # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_c_node->parent;
__pyx_v_c_node = __pyx_t_4;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":845
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":841
* return NULL
* c_node = c_node.parent
* if c_node is NULL or not _isElement(c_node): # <<<<<<<<<<<<<<
}
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":846
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":842
* c_node = c_node.parent
* if c_node is NULL or not _isElement(c_node):
* return NULL # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":847
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":843
* if c_node is NULL or not _isElement(c_node):
* return NULL
* return c_node # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":849
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":845
* return c_node
*
* cdef inline bint _tagMatches(xmlNode* c_node, const_xmlChar* c_href, const_xmlChar* c_name): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_tagMatches", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":863
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":859
* * its name string equals the c_name string
* """
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":864
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":860
* """
* if c_node is NULL:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":865
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":861
* if c_node is NULL:
* return 0
* if c_node.type != tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node->type != XML_ELEMENT_NODE);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":867
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":863
* if c_node.type != tree.XML_ELEMENT_NODE:
* # not an element, only succeed if we match everything
* return c_name is NULL and c_href is NULL # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":868
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":864
* # not an element, only succeed if we match everything
* return c_name is NULL and c_href is NULL
* if c_name is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_name == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":869
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":865
* return c_name is NULL and c_href is NULL
* if c_name is NULL:
* if c_href is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_href == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":871
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":867
* if c_href is NULL:
* # always match
* return 1 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":873
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":869
* return 1
* else:
* c_node_href = _getNs(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node_href = _getNs(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":874
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":870
* else:
* c_node_href = _getNs(c_node)
* if c_node_href is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_node_href == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":875
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":871
* c_node_href = _getNs(c_node)
* if c_node_href is NULL:
* return c_href[0] == c'\0' # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":877
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":873
* return c_href[0] == c'\0'
* else:
* return tree.xmlStrcmp(c_node_href, c_href) == 0 # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":878
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":874
* else:
* return tree.xmlStrcmp(c_node_href, c_href) == 0
* elif c_href is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_href == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":879
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":875
* return tree.xmlStrcmp(c_node_href, c_href) == 0
* elif c_href is NULL:
* if _getNs(c_node) is not NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (_getNs(__pyx_v_c_node) != NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":880
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":876
* elif c_href is NULL:
* if _getNs(c_node) is not NULL:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":881
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":877
* if _getNs(c_node) is not NULL:
* return 0
* return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0 # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":882
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":878
* return 0
* return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0
* elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0: # <<<<<<<<<<<<<<
}
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":883
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":879
* return c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0
* elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0:
* c_node_href = _getNs(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node_href = _getNs(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":884
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":880
* elif c_node.name == c_name or tree.xmlStrcmp(c_node.name, c_name) == 0:
* c_node_href = _getNs(c_node)
* if c_node_href is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node_href == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":885
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":881
* c_node_href = _getNs(c_node)
* if c_node_href is NULL:
* return c_href[0] == c'\0' # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":887
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":883
* return c_href[0] == c'\0'
* else:
* return tree.xmlStrcmp(c_node_href, c_href) == 0 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":889
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":885
* return tree.xmlStrcmp(c_node_href, c_href) == 0
* else:
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":891
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":887
* return 0
*
* cdef inline bint _tagMatchesExactly(xmlNode* c_node, qname* c_qname): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_tagMatchesExactly", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":910
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":906
* """
* cdef char* c_href
* if c_qname.c_name is not NULL and c_qname.c_name is not c_node.name: # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":911
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":907
* cdef char* c_href
* if c_qname.c_name is not NULL and c_qname.c_name is not c_node.name:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":912
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":908
* if c_qname.c_name is not NULL and c_qname.c_name is not c_node.name:
* return 0
* if c_qname.href is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_qname->href == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":913
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":909
* return 0
* if c_qname.href is NULL:
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":914
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":910
* if c_qname.href is NULL:
* return 1
* c_node_href = _getNs(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node_href = _getNs(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":915
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":911
* return 1
* c_node_href = _getNs(c_node)
* c_href = python.__cstr(c_qname.href) # <<<<<<<<<<<<<<
*/
__pyx_v_c_href = PyBytes_AS_STRING(__pyx_v_c_qname->href);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":916
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":912
* c_node_href = _getNs(c_node)
* c_href = python.__cstr(c_qname.href)
* if c_href[0] == '\0': # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_c_href[0]) == '\x00');
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":917
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":913
* c_href = python.__cstr(c_qname.href)
* if c_href[0] == '\0':
* return c_node_href is NULL or c_node_href[0] == '\0' # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":918
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":914
* if c_href[0] == '\0':
* return c_node_href is NULL or c_node_href[0] == '\0'
* elif c_node_href is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node_href == NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":919
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":915
* return c_node_href is NULL or c_node_href[0] == '\0'
* elif c_node_href is NULL:
* return 0 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":921
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":917
* return 0
* else:
* return tree.xmlStrcmp(<const_xmlChar*>c_href, c_node_href) == 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":923
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":919
* return tree.xmlStrcmp(<const_xmlChar*>c_href, c_node_href) == 0
*
* cdef Py_ssize_t _mapTagsToQnameMatchArray(xmlDoc* c_doc, list ns_tags, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_mapTagsToQnameMatchArray", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":931
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":927
* if it is not NULL.
* """
* cdef Py_ssize_t count = 0, i # <<<<<<<<<<<<<<
*/
__pyx_v_count = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":933
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":929
* cdef Py_ssize_t count = 0, i
* cdef bytes ns, tag
* for ns, tag in ns_tags: # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_ns_tags) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_1 = ((PyObject *)__pyx_v_ns_tags); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
PyObject* sequence = __pyx_t_3;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_5);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_5);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L6_unpacking_done:;
}
- if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_5)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_t_5))||((__pyx_t_5) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_5)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_ns));
__pyx_v_ns = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
__pyx_v_tag = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":934
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":930
* cdef bytes ns, tag
* for ns, tag in ns_tags:
* if tag is None: # <<<<<<<<<<<<<<
__pyx_t_8 = (__pyx_v_tag == ((PyObject*)Py_None));
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":935
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":931
* for ns, tag in ns_tags:
* if tag is None:
* c_tag = <const_xmlChar*>NULL # <<<<<<<<<<<<<<
goto __pyx_L7;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":936
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":932
* if tag is None:
* c_tag = <const_xmlChar*>NULL
* elif force_into_dict: # <<<<<<<<<<<<<<
*/
if (__pyx_v_force_into_dict) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":937
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":933
* c_tag = <const_xmlChar*>NULL
* elif force_into_dict:
* c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), len(tag)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_tag) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_9 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_tag = xmlDictLookup(__pyx_v_c_doc->dict, (const xmlChar*)PyBytes_AS_STRING(((PyObject *)__pyx_v_tag)), __pyx_t_9);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":938
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":934
* elif force_into_dict:
* c_tag = tree.xmlDictLookup(c_doc.dict, _xcstr(tag), len(tag))
* if c_tag is NULL: # <<<<<<<<<<<<<<
__pyx_t_8 = (__pyx_v_c_tag == NULL);
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":940
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":936
* if c_tag is NULL:
* # clean up before raising the error
* for i in xrange(count): # <<<<<<<<<<<<<<
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":941
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":937
* # clean up before raising the error
* for i in xrange(count):
* cpython.ref.Py_XDECREF(c_ns_tags[i].href) # <<<<<<<<<<<<<<
Py_XDECREF((__pyx_v_c_ns_tags[__pyx_v_i]).href);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":942
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":938
* for i in xrange(count):
* cpython.ref.Py_XDECREF(c_ns_tags[i].href)
* raise MemoryError() # <<<<<<<<<<<<<<
* else:
* c_tag = tree.xmlDictExists(c_doc.dict, _xcstr(tag), len(tag))
*/
- PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L8;
}
__pyx_L8:;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":944
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":940
* raise MemoryError()
* else:
* c_tag = tree.xmlDictExists(c_doc.dict, _xcstr(tag), len(tag)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_tag) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_9 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 944; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_tag)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_tag = xmlDictExists(__pyx_v_c_doc->dict, (const xmlChar*)PyBytes_AS_STRING(((PyObject *)__pyx_v_tag)), __pyx_t_9);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":945
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":941
* else:
* c_tag = tree.xmlDictExists(c_doc.dict, _xcstr(tag), len(tag))
* if c_tag is NULL: # <<<<<<<<<<<<<<
__pyx_t_8 = (__pyx_v_c_tag == NULL);
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":947
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":943
* if c_tag is NULL:
* # not in the dict => not in the document
* continue # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":948
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":944
* # not in the dict => not in the document
* continue
* c_ns_tags[count].c_name = c_tag # <<<<<<<<<<<<<<
*/
(__pyx_v_c_ns_tags[__pyx_v_count]).c_name = __pyx_v_c_tag;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":949
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":945
* continue
* c_ns_tags[count].c_name = c_tag
* if ns is None: # <<<<<<<<<<<<<<
__pyx_t_8 = (__pyx_v_ns == ((PyObject*)Py_None));
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":950
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":946
* c_ns_tags[count].c_name = c_tag
* if ns is None:
* c_ns_tags[count].href = NULL # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":952
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":948
* c_ns_tags[count].href = NULL
* else:
* cpython.ref.Py_INCREF(ns) # keep an owned reference! # <<<<<<<<<<<<<<
*/
Py_INCREF(((PyObject *)__pyx_v_ns));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":953
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":949
* else:
* cpython.ref.Py_INCREF(ns) # keep an owned reference!
* c_ns_tags[count].href = <python.PyObject*>ns # <<<<<<<<<<<<<<
}
__pyx_L12:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":954
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":950
* cpython.ref.Py_INCREF(ns) # keep an owned reference!
* c_ns_tags[count].href = <python.PyObject*>ns
* count += 1 # <<<<<<<<<<<<<<
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":955
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":951
* c_ns_tags[count].href = <python.PyObject*>ns
* count += 1
* return count # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":957
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":953
* return count
*
* cdef int _removeNode(_Document doc, xmlNode* c_node) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_removeNode", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":962
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":958
* """
* cdef xmlNode* c_next
* c_next = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_next = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":963
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":959
* cdef xmlNode* c_next
* c_next = c_node.next
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":964
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":960
* c_next = c_node.next
* tree.xmlUnlinkNode(c_node)
* _moveTail(c_next, c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":965
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":961
* tree.xmlUnlinkNode(c_node)
* _moveTail(c_next, c_node)
* if not attemptDeallocation(c_node): # <<<<<<<<<<<<<<
__pyx_t_2 = (!__pyx_f_4lxml_5etree_attemptDeallocation(__pyx_v_c_node));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":967
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":963
* if not attemptDeallocation(c_node):
* # make namespaces absolute
* moveNodeToDocument(doc, c_node.doc, c_node) # <<<<<<<<<<<<<<
* return 0
*
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_moveNodeToDocument(__pyx_v_doc, __pyx_v_c_node->doc, __pyx_v_c_node); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":968
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":964
* # make namespaces absolute
* moveNodeToDocument(doc, c_node.doc, c_node)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":970
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":966
* return 0
*
* cdef int _removeSiblings(xmlNode* c_element, tree.xmlElementType node_type, bint with_tail) except -1: # <<<<<<<<<<<<<<
int __pyx_t_2;
__Pyx_RefNannySetupContext("_removeSiblings", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":973
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":969
* cdef xmlNode* c_node
* cdef xmlNode* c_next
* c_node = c_element.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_element->next;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":974
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":970
* cdef xmlNode* c_next
* c_node = c_element.next
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":975
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":971
* c_node = c_element.next
* while c_node is not NULL:
* c_next = _nextElement(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_f_4lxml_5etree__nextElement(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":976
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":972
* while c_node is not NULL:
* c_next = _nextElement(c_node)
* if c_node.type == node_type: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node->type == __pyx_v_node_type);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":977
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":973
* c_next = _nextElement(c_node)
* if c_node.type == node_type:
* if with_tail: # <<<<<<<<<<<<<<
*/
if (__pyx_v_with_tail) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":978
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":974
* if c_node.type == node_type:
* if with_tail:
* _removeText(c_node.next) # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":979
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":975
* if with_tail:
* _removeText(c_node.next)
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":980
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":976
* _removeText(c_node.next)
* tree.xmlUnlinkNode(c_node)
* attemptDeallocation(c_node) # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":981
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":977
* tree.xmlUnlinkNode(c_node)
* attemptDeallocation(c_node)
* c_node = c_next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_v_c_next;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":982
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":978
* attemptDeallocation(c_node)
* c_node = c_next
* c_node = c_element.prev # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_element->prev;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":983
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":979
* c_node = c_next
* c_node = c_element.prev
* while c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node != NULL);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":984
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":980
* c_node = c_element.prev
* while c_node is not NULL:
* c_next = _previousElement(c_node) # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_f_4lxml_5etree__previousElement(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":985
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":981
* while c_node is not NULL:
* c_next = _previousElement(c_node)
* if c_node.type == node_type: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node->type == __pyx_v_node_type);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":986
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":982
* c_next = _previousElement(c_node)
* if c_node.type == node_type:
* if with_tail: # <<<<<<<<<<<<<<
*/
if (__pyx_v_with_tail) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":987
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":983
* if c_node.type == node_type:
* if with_tail:
* _removeText(c_node.next) # <<<<<<<<<<<<<<
}
__pyx_L10:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":988
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":984
* if with_tail:
* _removeText(c_node.next)
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":989
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":985
* _removeText(c_node.next)
* tree.xmlUnlinkNode(c_node)
* attemptDeallocation(c_node) # <<<<<<<<<<<<<<
}
__pyx_L9:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":990
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":986
* tree.xmlUnlinkNode(c_node)
* attemptDeallocation(c_node)
* c_node = c_next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_v_c_next;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":991
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":987
* attemptDeallocation(c_node)
* c_node = c_next
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":993
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":989
* return 0
*
* cdef void _moveTail(xmlNode* c_tail, xmlNode* c_target): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("_moveTail", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":997
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":993
* # tail support: look for any text nodes trailing this node and
* # move them too
* c_tail = _textNodeOrSkip(c_tail) # <<<<<<<<<<<<<<
*/
__pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":998
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":994
* # move them too
* c_tail = _textNodeOrSkip(c_tail)
* while c_tail is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_tail != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":999
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":995
* c_tail = _textNodeOrSkip(c_tail)
* while c_tail is not NULL:
* c_next = _textNodeOrSkip(c_tail.next) # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1000
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":996
* while c_tail is not NULL:
* c_next = _textNodeOrSkip(c_tail.next)
* c_target = tree.xmlAddNextSibling(c_target, c_tail) # <<<<<<<<<<<<<<
*/
__pyx_v_c_target = xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_tail);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1001
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":997
* c_next = _textNodeOrSkip(c_tail.next)
* c_target = tree.xmlAddNextSibling(c_target, c_tail)
* c_tail = c_next # <<<<<<<<<<<<<<
__Pyx_RefNannyFinishContext();
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1003
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":999
* c_tail = c_next
*
* cdef int _copyTail(xmlNode* c_tail, xmlNode* c_target) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copyTail", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1007
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1003
* # tail copying support: look for any text nodes trailing this node and
* # copy it to the target node
* c_tail = _textNodeOrSkip(c_tail) # <<<<<<<<<<<<<<
*/
__pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1008
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1004
* # copy it to the target node
* c_tail = _textNodeOrSkip(c_tail)
* while c_tail is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_tail != NULL);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1009
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1005
* c_tail = _textNodeOrSkip(c_tail)
* while c_tail is not NULL:
* if c_target.doc is not c_tail.doc: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_target->doc != __pyx_v_c_tail->doc);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1010
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1006
* while c_tail is not NULL:
* if c_target.doc is not c_tail.doc:
* c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1012
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1008
* c_new_tail = tree.xmlDocCopyNode(c_tail, c_target.doc, 0)
* else:
* c_new_tail = tree.xmlCopyNode(c_tail, 0) # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1013
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1009
* else:
* c_new_tail = tree.xmlCopyNode(c_tail, 0)
* if c_new_tail is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_new_tail == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1014
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1010
* c_new_tail = tree.xmlCopyNode(c_tail, 0)
* if c_new_tail is NULL:
* raise MemoryError() # <<<<<<<<<<<<<<
* c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
* c_tail = _textNodeOrSkip(c_tail.next)
*/
- PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1015
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1011
* if c_new_tail is NULL:
* raise MemoryError()
* c_target = tree.xmlAddNextSibling(c_target, c_new_tail) # <<<<<<<<<<<<<<
*/
__pyx_v_c_target = xmlAddNextSibling(__pyx_v_c_target, __pyx_v_c_new_tail);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1016
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1012
* raise MemoryError()
* c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
* c_tail = _textNodeOrSkip(c_tail.next) # <<<<<<<<<<<<<<
__pyx_v_c_tail = __pyx_f_4lxml_5etree__textNodeOrSkip(__pyx_v_c_tail->next);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1017
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1013
* c_target = tree.xmlAddNextSibling(c_target, c_new_tail)
* c_tail = _textNodeOrSkip(c_tail.next)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1019
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1015
* return 0
*
* cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_copyNonElementSiblings", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1021
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1017
* cdef int _copyNonElementSiblings(xmlNode* c_node, xmlNode* c_target) except -1:
* cdef xmlNode* c_copy
* cdef xmlNode* c_sibling = c_node # <<<<<<<<<<<<<<
*/
__pyx_v_c_sibling = __pyx_v_c_node;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1022
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1018
* cdef xmlNode* c_copy
* cdef xmlNode* c_sibling = c_node
* while c_sibling.prev != NULL and \ # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_sibling->prev != NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1023
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1019
* cdef xmlNode* c_sibling = c_node
* while c_sibling.prev != NULL and \
* (c_sibling.prev.type == tree.XML_PI_NODE or \ # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_sibling->prev->type == XML_PI_NODE);
if (!__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1024
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1020
* while c_sibling.prev != NULL and \
* (c_sibling.prev.type == tree.XML_PI_NODE or \
* c_sibling.prev.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
}
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1025
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1021
* (c_sibling.prev.type == tree.XML_PI_NODE or \
* c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev # <<<<<<<<<<<<<<
__pyx_v_c_sibling = __pyx_t_5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1026
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1022
* c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev
* while c_sibling != c_node: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_sibling != __pyx_v_c_node);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1027
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1023
* c_sibling = c_sibling.prev
* while c_sibling != c_node:
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) # <<<<<<<<<<<<<<
*/
__pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1028
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1024
* while c_sibling != c_node:
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
* if c_copy is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_copy == NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1029
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1025
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
* if c_copy is NULL:
* raise MemoryError() # <<<<<<<<<<<<<<
* tree.xmlAddPrevSibling(c_target, c_copy)
* c_sibling = c_sibling.next
*/
- PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1029; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1025; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1030
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1026
* if c_copy is NULL:
* raise MemoryError()
* tree.xmlAddPrevSibling(c_target, c_copy) # <<<<<<<<<<<<<<
*/
xmlAddPrevSibling(__pyx_v_c_target, __pyx_v_c_copy);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1031
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1027
* raise MemoryError()
* tree.xmlAddPrevSibling(c_target, c_copy)
* c_sibling = c_sibling.next # <<<<<<<<<<<<<<
__pyx_v_c_sibling = __pyx_t_5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1032
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1028
* tree.xmlAddPrevSibling(c_target, c_copy)
* c_sibling = c_sibling.next
* while c_sibling.next != NULL and \ # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_sibling->next != NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1033
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1029
* c_sibling = c_sibling.next
* while c_sibling.next != NULL and \
* (c_sibling.next.type == tree.XML_PI_NODE or \ # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_sibling->next->type == XML_PI_NODE);
if (!__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1034
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1030
* while c_sibling.next != NULL and \
* (c_sibling.next.type == tree.XML_PI_NODE or \
* c_sibling.next.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
}
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1035
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1031
* (c_sibling.next.type == tree.XML_PI_NODE or \
* c_sibling.next.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.next # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_c_sibling->next;
__pyx_v_c_sibling = __pyx_t_5;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1036
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1032
* c_sibling.next.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.next
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1) # <<<<<<<<<<<<<<
*/
__pyx_v_c_copy = xmlDocCopyNode(__pyx_v_c_sibling, __pyx_v_c_target->doc, 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1037
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1033
* c_sibling = c_sibling.next
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
* if c_copy is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_copy == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1038
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1034
* c_copy = tree.xmlDocCopyNode(c_sibling, c_target.doc, 1)
* if c_copy is NULL:
* raise MemoryError() # <<<<<<<<<<<<<<
* tree.xmlAddNextSibling(c_target, c_copy)
*
*/
- PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyErr_NoMemory(); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L10;
}
__pyx_L10:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1039
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1035
* if c_copy is NULL:
* raise MemoryError()
* tree.xmlAddNextSibling(c_target, c_copy) # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1041
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1037
* tree.xmlAddNextSibling(c_target, c_copy)
*
* cdef int _deleteSlice(_Document doc, xmlNode* c_node, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_deleteSlice", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1049
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1045
* cdef Py_ssize_t c, i
* cdef _node_to_node_function next_element
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_node == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1050
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1046
* cdef _node_to_node_function next_element
* if c_node is NULL:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1051
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1047
* if c_node is NULL:
* return 0
* if step > 0: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_step > 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1052
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1048
* return 0
* if step > 0:
* next_element = _nextElement # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1054
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1050
* next_element = _nextElement
* else:
* step = -step # <<<<<<<<<<<<<<
*/
__pyx_v_step = (-__pyx_v_step);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1055
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1051
* else:
* step = -step
* next_element = _previousElement # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1057
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1053
* next_element = _previousElement
* # now start deleting nodes
* c = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_c = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1058
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1054
* # now start deleting nodes
* c = 0
* c_next = c_node # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_v_c_node;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1059
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1055
* c = 0
* c_next = c_node
* while c_node is not NULL and c < count: # <<<<<<<<<<<<<<
}
if (!__pyx_t_3) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1060
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1056
* c_next = c_node
* while c_node is not NULL and c < count:
* for i in range(step): # <<<<<<<<<<<<<<
for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
__pyx_v_i = __pyx_t_5;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1061
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1057
* while c_node is not NULL and c < count:
* for i in range(step):
* c_next = next_element(c_next) # <<<<<<<<<<<<<<
__pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1062
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1058
* for i in range(step):
* c_next = next_element(c_next)
* _removeNode(doc, c_node) # <<<<<<<<<<<<<<
* c += 1
* c_node = c_next
*/
- __pyx_t_6 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __pyx_f_4lxml_5etree__removeNode(__pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1063
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1059
* c_next = next_element(c_next)
* _removeNode(doc, c_node)
* c += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_c + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1064
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1060
* _removeNode(doc, c_node)
* c += 1
* c_node = c_next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_v_c_next;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1065
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1061
* c += 1
* c_node = c_next
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1067
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1063
* return 0
*
* cdef int _replaceSlice(_Element parent, xmlNode* c_node, # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("_replaceSlice", 0);
__Pyx_INCREF(__pyx_v_elements);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1082
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1078
* cdef Py_ssize_t seqlength, i, c
* cdef _node_to_node_function next_element
* assert step > 0 # <<<<<<<<<<<<<<
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!(__pyx_v_step > 0))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1083
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1079
* cdef _node_to_node_function next_element
* assert step > 0
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1084
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1080
* assert step > 0
* if left_to_right:
* next_element = _nextElement # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1086
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1082
* next_element = _nextElement
* else:
* next_element = _previousElement # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1088
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1084
* next_element = _previousElement
*
* if not python.PyList_Check(elements) and \ # <<<<<<<<<<<<<<
__pyx_t_1 = (!PyList_Check(__pyx_v_elements));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1089
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1085
*
* if not python.PyList_Check(elements) and \
* not python.PyTuple_Check(elements): # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1090
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1086
* if not python.PyList_Check(elements) and \
* not python.PyTuple_Check(elements):
* elements = list(elements) # <<<<<<<<<<<<<<
*
* if step > 1:
*/
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_elements);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_elements);
__Pyx_GIVEREF(__pyx_v_elements);
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyList_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__Pyx_DECREF(__pyx_v_elements);
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1092
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1088
* elements = list(elements)
*
* if step > 1: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_step > 1);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1094
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1090
* if step > 1:
* # *replacing* children stepwise with list => check size!
* seqlength = len(elements) # <<<<<<<<<<<<<<
* if seqlength != slicelength:
* raise ValueError, u"attempt to assign sequence of size %d " \
*/
- __pyx_t_6 = PyObject_Length(__pyx_v_elements); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_Length(__pyx_v_elements); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_seqlength = __pyx_t_6;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1095
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1091
* # *replacing* children stepwise with list => check size!
* seqlength = len(elements)
* if seqlength != slicelength: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_seqlength != __pyx_v_slicelength);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1097
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1093
* if seqlength != slicelength:
* raise ValueError, u"attempt to assign sequence of size %d " \
* u"to extended slice of size %d" % (seqlength, slicelength) # <<<<<<<<<<<<<<
*
* if c_node is NULL:
*/
- __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_seqlength); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_seqlength); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_slicelength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_slicelength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_5 = 0;
__pyx_t_4 = 0;
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_23), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_23), ((PyObject *)__pyx_t_7)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_4), 0, 0);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1099
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1095
* u"to extended slice of size %d" % (seqlength, slicelength)
*
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_node == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1101
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1097
* if c_node is NULL:
* # no children yet => add all elements straight away
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1102
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1098
* # no children yet => add all elements straight away
* if left_to_right:
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_element));
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1103
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1099
* if left_to_right:
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_3 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_3)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1104
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1100
* for element in elements:
* assert element is not None, u"Node must not be None"
* _appendChild(parent, element) # <<<<<<<<<<<<<<
* else:
* for element in elements:
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L8;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1106
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1102
* _appendChild(parent, element)
* else:
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_element));
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1107
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1103
* else:
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_3 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_3)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1108
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1104
* for element in elements:
* assert element is not None, u"Node must not be None"
* _prependChild(parent, element) # <<<<<<<<<<<<<<
* return 0
*
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1109
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1105
* assert element is not None, u"Node must not be None"
* _prependChild(parent, element)
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1112
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1108
*
* # remove the elements first as some might be re-added
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1114
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1110
* if left_to_right:
* # L->R, remember left neighbour
* c_orig_neighbour = _previousElement(c_node) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1117
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1113
* else:
* # R->L, remember right neighbour
* c_orig_neighbour = _nextElement(c_node) # <<<<<<<<<<<<<<
}
__pyx_L13:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1123
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1119
* # safe to let _removeNode() try (and fail) to free them even if
* # the element itself or one of its descendents will be reinserted.
* c = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_c = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1124
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1120
* # the element itself or one of its descendents will be reinserted.
* c = 0
* c_next = c_node # <<<<<<<<<<<<<<
*/
__pyx_v_c_next = __pyx_v_c_node;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1125
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1121
* c = 0
* c_next = c_node
* while c_node is not NULL and c < slicelength: # <<<<<<<<<<<<<<
}
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1126
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1122
* c_next = c_node
* while c_node is not NULL and c < slicelength:
* for i in range(step): # <<<<<<<<<<<<<<
for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_6; __pyx_t_10+=1) {
__pyx_v_i = __pyx_t_10;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1127
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1123
* while c_node is not NULL and c < slicelength:
* for i in range(step):
* c_next = next_element(c_next) # <<<<<<<<<<<<<<
__pyx_v_c_next = __pyx_v_next_element(__pyx_v_c_next);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1128
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1124
* for i in range(step):
* c_next = next_element(c_next)
* _removeNode(parent._doc, c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
__Pyx_INCREF(__pyx_t_4);
- __pyx_t_9 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_node); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__removeNode(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_node); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1129
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1125
* c_next = next_element(c_next)
* _removeNode(parent._doc, c_node)
* c += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_c + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1130
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1126
* _removeNode(parent._doc, c_node)
* c += 1
* c_node = c_next # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_v_c_next;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1133
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1129
*
* # make sure each element is inserted only once
* elements = iter(elements) # <<<<<<<<<<<<<<
*
* # find the first node right of the new insertion point
*/
- __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_v_elements);
__pyx_v_elements = __pyx_t_4;
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1136
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1132
*
* # find the first node right of the new insertion point
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1137
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1133
* # find the first node right of the new insertion point
* if left_to_right:
* if c_orig_neighbour is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_orig_neighbour != NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1138
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1134
* if left_to_right:
* if c_orig_neighbour is not NULL:
* c_node = next_element(c_orig_neighbour) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1141
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1137
* else:
* # before the first element
* c_node = _findChildForwards(parent._c_node, 0) # <<<<<<<<<<<<<<
goto __pyx_L18;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1142
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1138
* # before the first element
* c_node = _findChildForwards(parent._c_node, 0)
* elif c_orig_neighbour is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_orig_neighbour == NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1145
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1141
* # at the end, but reversed stepping
* # append one element and go to the next insertion point
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1141; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1146
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1142
* # append one element and go to the next insertion point
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_2)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1147
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1143
* for element in elements:
* assert element is not None, u"Node must not be None"
* _appendChild(parent, element) # <<<<<<<<<<<<<<
* c_node = element._c_node
* if slicelength > 0:
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1148
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1144
* assert element is not None, u"Node must not be None"
* _appendChild(parent, element)
* c_node = element._c_node # <<<<<<<<<<<<<<
__pyx_t_11 = __pyx_v_element->_c_node;
__pyx_v_c_node = __pyx_t_11;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1149
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1145
* _appendChild(parent, element)
* c_node = element._c_node
* if slicelength > 0: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_slicelength > 0);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1150
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1146
* c_node = element._c_node
* if slicelength > 0:
* slicelength -= 1 # <<<<<<<<<<<<<<
*/
__pyx_v_slicelength = (__pyx_v_slicelength - 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1151
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1147
* if slicelength > 0:
* slicelength -= 1
* for i in range(1, step): # <<<<<<<<<<<<<<
for (__pyx_t_12 = 1; __pyx_t_12 < __pyx_t_10; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1152
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1148
* slicelength -= 1
* for i in range(1, step):
* c_node = next_element(c_node) # <<<<<<<<<<<<<<
}
__pyx_L22:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1153
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1149
* for i in range(1, step):
* c_node = next_element(c_node)
* break # <<<<<<<<<<<<<<
}
__pyx_L18:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1155
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1151
* break
*
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1158
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1154
* # adjust step size after removing slice as we are not stepping
* # over the newly inserted elements
* step -= 1 # <<<<<<<<<<<<<<
}
__pyx_L25:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1161
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1157
*
* # now insert elements where we removed them
* if c_node is not NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node != NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1162
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1158
* # now insert elements where we removed them
* if c_node is not NULL:
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1158; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_element));
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1163
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1159
* if c_node is not NULL:
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_2)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1164
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1160
* for element in elements:
* assert element is not None, u"Node must not be None"
* _assertValidNode(element) # <<<<<<<<<<<<<<
* # move element and tail over
* c_source_doc = element._c_node.doc
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1166
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1162
* _assertValidNode(element)
* # move element and tail over
* c_source_doc = element._c_node.doc # <<<<<<<<<<<<<<
__pyx_t_13 = __pyx_v_element->_c_node->doc;
__pyx_v_c_source_doc = __pyx_t_13;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1167
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1163
* # move element and tail over
* c_source_doc = element._c_node.doc
* c_next = element._c_node.next # <<<<<<<<<<<<<<
__pyx_t_11 = __pyx_v_element->_c_node->next;
__pyx_v_c_next = __pyx_t_11;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1168
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1164
* c_source_doc = element._c_node.doc
* c_next = element._c_node.next
* tree.xmlAddPrevSibling(c_node, element._c_node) # <<<<<<<<<<<<<<
*/
xmlAddPrevSibling(__pyx_v_c_node, __pyx_v_element->_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1169
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1165
* c_next = element._c_node.next
* tree.xmlAddPrevSibling(c_node, element._c_node)
* _moveTail(c_next, element._c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_element->_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1172
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1168
*
* # integrate element into new document
* moveNodeToDocument(parent._doc, c_source_doc, element._c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_7 = ((PyObject *)__pyx_v_parent->_doc);
__Pyx_INCREF(__pyx_t_7);
- __pyx_t_9 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_7), __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_7), __pyx_v_c_source_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1175
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1171
*
* # stop at the end of the slice
* if slicelength > 0: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_slicelength > 0);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1176
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1172
* # stop at the end of the slice
* if slicelength > 0:
* slicelength = slicelength - 1 # <<<<<<<<<<<<<<
*/
__pyx_v_slicelength = (__pyx_v_slicelength - 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1177
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1173
* if slicelength > 0:
* slicelength = slicelength - 1
* for i in range(step): # <<<<<<<<<<<<<<
for (__pyx_t_12 = 0; __pyx_t_12 < __pyx_t_10; __pyx_t_12+=1) {
__pyx_v_i = __pyx_t_12;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1178
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1174
* slicelength = slicelength - 1
* for i in range(step):
* c_node = next_element(c_node) # <<<<<<<<<<<<<<
__pyx_v_c_node = __pyx_v_next_element(__pyx_v_c_node);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1179
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1175
* for i in range(step):
* c_node = next_element(c_node)
* if c_node is NULL: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c_node == NULL);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1180
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1176
* c_node = next_element(c_node)
* if c_node is NULL:
* break # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1183
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1179
* else:
* # everything inserted
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L26:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1186
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1182
*
* # append the remaining elements at the respective end
* if left_to_right: # <<<<<<<<<<<<<<
*/
if (__pyx_v_left_to_right) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1187
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1183
* # append the remaining elements at the respective end
* if left_to_right:
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_element));
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1188
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1184
* if left_to_right:
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_2)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1189
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1185
* for element in elements:
* assert element is not None, u"Node must not be None"
* _assertValidNode(element) # <<<<<<<<<<<<<<
* _appendChild(parent, element)
* else:
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1190
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1186
* assert element is not None, u"Node must not be None"
* _assertValidNode(element)
* _appendChild(parent, element) # <<<<<<<<<<<<<<
* else:
* for element in elements:
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__appendChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
goto __pyx_L34;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1192
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1188
* _appendChild(parent, element)
* else:
* for element in elements: # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_elements; __Pyx_INCREF(__pyx_t_4); __pyx_t_6 = 0;
__pyx_t_8 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_elements); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_8 = Py_TYPE(__pyx_t_4)->tp_iternext;
}
if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_4)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6); __Pyx_INCREF(__pyx_t_7); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_7 = __pyx_t_8(__pyx_t_4);
if (unlikely(!__pyx_t_7)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__Pyx_GOTREF(__pyx_t_7);
}
- if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1188; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(((PyObject *)__pyx_v_element));
__pyx_v_element = ((struct LxmlElement *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1193
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1189
* else:
* for element in elements:
* assert element is not None, u"Node must not be None" # <<<<<<<<<<<<<<
__pyx_t_2 = (((PyObject *)__pyx_v_element) != Py_None);
if (unlikely(!__pyx_t_2)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_u_24));
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1194
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1190
* for element in elements:
* assert element is not None, u"Node must not be None"
* _assertValidNode(element) # <<<<<<<<<<<<<<
* _prependChild(parent, element)
*
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1190; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1195
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1191
* assert element is not None, u"Node must not be None"
* _assertValidNode(element)
* _prependChild(parent, element) # <<<<<<<<<<<<<<
*
* return 0
*/
- __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = __pyx_f_4lxml_5etree__prependChild(__pyx_v_parent, __pyx_v_element); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
}
__pyx_L34:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1197
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1193
* _prependChild(parent, element)
*
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1199
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1195
* return 0
*
* cdef int _appendChild(_Element parent, _Element child) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_appendChild", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1203
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1199
* """
* cdef xmlNode* c_next
* cdef xmlNode* c_node = child._c_node # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_child->_c_node;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1204
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1200
* cdef xmlNode* c_next
* cdef xmlNode* c_node = child._c_node
* cdef xmlDoc* c_source_doc = c_node.doc # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->doc;
__pyx_v_c_source_doc = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1206
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1202
* cdef xmlDoc* c_source_doc = c_node.doc
* # store possible text node
* c_next = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_next = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1208
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1204
* c_next = c_node.next
* # move node itself
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1209
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1205
* # move node itself
* tree.xmlUnlinkNode(c_node)
* tree.xmlAddChild(parent._c_node, c_node) # <<<<<<<<<<<<<<
*/
xmlAddChild(__pyx_v_parent->_c_node, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1210
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1206
* tree.xmlUnlinkNode(c_node)
* tree.xmlAddChild(parent._c_node, c_node)
* _moveTail(c_next, c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1213
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1209
* # uh oh, elements may be pointing to different doc when
* # parent element has moved; change them too..
* moveNodeToDocument(parent._doc, c_source_doc, c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_3 = ((PyObject *)__pyx_v_parent->_doc);
__Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1215
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1211
* moveNodeToDocument(parent._doc, c_source_doc, c_node)
*
* cdef int _prependChild(_Element parent, _Element child) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_prependChild", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1220
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1216
* cdef xmlNode* c_next
* cdef xmlNode* c_child
* cdef xmlNode* c_node = child._c_node # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_child->_c_node;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1221
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1217
* cdef xmlNode* c_child
* cdef xmlNode* c_node = child._c_node
* cdef xmlDoc* c_source_doc = c_node.doc # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->doc;
__pyx_v_c_source_doc = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1223
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1219
* cdef xmlDoc* c_source_doc = c_node.doc
* # store possible text node
* c_next = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_next = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1225
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1221
* c_next = c_node.next
* # move node itself
* c_child = _findChildForwards(parent._c_node, 0) # <<<<<<<<<<<<<<
*/
__pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1226
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1222
* # move node itself
* c_child = _findChildForwards(parent._c_node, 0)
* if c_child is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_child == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1227
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1223
* c_child = _findChildForwards(parent._c_node, 0)
* if c_child is NULL:
* tree.xmlUnlinkNode(c_node) # <<<<<<<<<<<<<<
*/
xmlUnlinkNode(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1228
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1224
* if c_child is NULL:
* tree.xmlUnlinkNode(c_node)
* tree.xmlAddChild(parent._c_node, c_node) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1230
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1226
* tree.xmlAddChild(parent._c_node, c_node)
* else:
* tree.xmlAddPrevSibling(c_child, c_node) # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1231
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1227
* else:
* tree.xmlAddPrevSibling(c_child, c_node)
* _moveTail(c_next, c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1234
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1230
* # uh oh, elements may be pointing to different doc when
* # parent element has moved; change them too..
* moveNodeToDocument(parent._doc, c_source_doc, c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_4 = ((PyObject *)__pyx_v_parent->_doc);
__Pyx_INCREF(__pyx_t_4);
- __pyx_t_5 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_4), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1236
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1232
* moveNodeToDocument(parent._doc, c_source_doc, c_node)
*
* cdef int _appendSibling(_Element element, _Element sibling) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_appendSibling", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1239
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1235
* u"""Append a new child to a parent element.
* """
* cdef xmlNode* c_node = sibling._c_node # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_sibling->_c_node;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1240
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1236
* """
* cdef xmlNode* c_node = sibling._c_node
* cdef xmlDoc* c_source_doc = c_node.doc # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->doc;
__pyx_v_c_source_doc = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1243
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1239
* cdef xmlNode* c_next
* # store possible text node
* c_next = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_next = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1245
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1241
* c_next = c_node.next
* # move node itself
* tree.xmlAddNextSibling(element._c_node, c_node) # <<<<<<<<<<<<<<
*/
xmlAddNextSibling(__pyx_v_element->_c_node, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1246
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1242
* # move node itself
* tree.xmlAddNextSibling(element._c_node, c_node)
* _moveTail(c_next, c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1249
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1245
* # uh oh, elements may be pointing to different doc when
* # parent element has moved; change them too..
* moveNodeToDocument(element._doc, c_source_doc, c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_3 = ((PyObject *)__pyx_v_element->_doc);
__Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1251
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1247
* moveNodeToDocument(element._doc, c_source_doc, c_node)
*
* cdef int _prependSibling(_Element element, _Element sibling) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_prependSibling", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1254
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1250
* u"""Append a new child to a parent element.
* """
* cdef xmlNode* c_node = sibling._c_node # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_sibling->_c_node;
__pyx_v_c_node = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1255
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1251
* """
* cdef xmlNode* c_node = sibling._c_node
* cdef xmlDoc* c_source_doc = c_node.doc # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_c_node->doc;
__pyx_v_c_source_doc = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1258
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1254
* cdef xmlNode* c_next
* # store possible text node
* c_next = c_node.next # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_v_c_node->next;
__pyx_v_c_next = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1260
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1256
* c_next = c_node.next
* # move node itself
* tree.xmlAddPrevSibling(element._c_node, c_node) # <<<<<<<<<<<<<<
*/
xmlAddPrevSibling(__pyx_v_element->_c_node, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1261
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1257
* # move node itself
* tree.xmlAddPrevSibling(element._c_node, c_node)
* _moveTail(c_next, c_node) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1264
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1260
* # uh oh, elements may be pointing to different doc when
* # parent element has moved; change them too..
* moveNodeToDocument(element._doc, c_source_doc, c_node) # <<<<<<<<<<<<<<
*/
__pyx_t_3 = ((PyObject *)__pyx_v_element->_doc);
__Pyx_INCREF(__pyx_t_3);
- __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree_moveNodeToDocument(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_source_doc, __pyx_v_c_node); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_r = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1266
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1262
* moveNodeToDocument(element._doc, c_source_doc, c_node)
*
* cdef inline int isutf8(const_xmlChar* s): # <<<<<<<<<<<<<<
long __pyx_t_2;
__Pyx_RefNannySetupContext("isutf8", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1267
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1263
*
* cdef inline int isutf8(const_xmlChar* s):
* cdef xmlChar c = s[0] # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_s[0]);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1268
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1264
* cdef inline int isutf8(const_xmlChar* s):
* cdef xmlChar c = s[0]
* while c != c'\0': # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c != '\x00');
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1269
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1265
* cdef xmlChar c = s[0]
* while c != c'\0':
* if c & 0x80: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_c & 0x80);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1270
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1266
* while c != c'\0':
* if c & 0x80:
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1271
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1267
* if c & 0x80:
* return 1
* s += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_s = (__pyx_v_s + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1272
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1268
* return 1
* s += 1
* c = s[0] # <<<<<<<<<<<<<<
__pyx_v_c = (__pyx_v_s[0]);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1273
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1269
* s += 1
* c = s[0]
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1275
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1271
* return 0
*
* cdef int check_string_utf8(bytes pystring): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("check_string_utf8", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1280
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1276
* bytes or ASCII control characters.
* """
* cdef const_xmlChar* s = _xcstr(pystring) # <<<<<<<<<<<<<<
*/
__pyx_v_s = (const xmlChar*)PyBytes_AS_STRING(((PyObject *)__pyx_v_pystring));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1281
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1277
* """
* cdef const_xmlChar* s = _xcstr(pystring)
* cdef const_xmlChar* c_end = s + len(pystring) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_pystring) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_1 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_pystring)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_pystring)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_end = (__pyx_v_s + __pyx_t_1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1282
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1278
* cdef const_xmlChar* s = _xcstr(pystring)
* cdef const_xmlChar* c_end = s + len(pystring)
* cdef bint is_non_ascii = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_is_non_ascii = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1283
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1279
* cdef const_xmlChar* c_end = s + len(pystring)
* cdef bint is_non_ascii = 0
* while s < c_end: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_s < __pyx_v_c_end);
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1284
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1280
* cdef bint is_non_ascii = 0
* while s < c_end:
* if s[0] & 0x80: # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_s[0]) & 0x80);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1286
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1282
* if s[0] & 0x80:
* # skip over multi byte sequences
* while s < c_end and s[0] & 0x80: # <<<<<<<<<<<<<<
}
if (!__pyx_t_4) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1287
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1283
* # skip over multi byte sequences
* while s < c_end and s[0] & 0x80:
* s += 1 # <<<<<<<<<<<<<<
__pyx_v_s = (__pyx_v_s + 1);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1288
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1284
* while s < c_end and s[0] & 0x80:
* s += 1
* is_non_ascii = 1 # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1289
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1285
* s += 1
* is_non_ascii = 1
* if s < c_end and not tree.xmlIsChar_ch(s[0]): # <<<<<<<<<<<<<<
}
if (__pyx_t_5) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1290
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1286
* is_non_ascii = 1
* if s < c_end and not tree.xmlIsChar_ch(s[0]):
* return -1 # invalid! # <<<<<<<<<<<<<<
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1291
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1287
* if s < c_end and not tree.xmlIsChar_ch(s[0]):
* return -1 # invalid!
* s += 1 # <<<<<<<<<<<<<<
__pyx_v_s = (__pyx_v_s + 1);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1292
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1288
* return -1 # invalid!
* s += 1
* return is_non_ascii # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1294
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1290
* return is_non_ascii
*
* cdef inline object funicodeOrNone(const_xmlChar* s): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("funicodeOrNone", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1295
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1291
*
* cdef inline object funicodeOrNone(const_xmlChar* s):
* return funicode(s) if s is not NULL else None # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
if ((__pyx_v_s != NULL)) {
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __pyx_t_2;
__pyx_t_2 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1297
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1293
* return funicode(s) if s is not NULL else None
*
* cdef inline object funicodeOrEmpty(const_xmlChar* s): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("funicodeOrEmpty", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1298
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1294
*
* cdef inline object funicodeOrEmpty(const_xmlChar* s):
* return funicode(s) if s is not NULL else '' # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
if ((__pyx_v_s != NULL)) {
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = __pyx_t_2;
__pyx_t_2 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1300
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1296
* return funicode(s) if s is not NULL else ''
*
* cdef object funicode(const_xmlChar* s): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("funicode", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1304
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1300
* cdef const_xmlChar* spos
* cdef bint is_non_ascii
* if python.LXML_UNICODE_STRINGS: # <<<<<<<<<<<<<<
*/
if (LXML_UNICODE_STRINGS) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1305
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1301
* cdef bint is_non_ascii
* if python.LXML_UNICODE_STRINGS:
* return s.decode('UTF-8') # <<<<<<<<<<<<<<
* is_non_ascii = 0
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__Pyx_decode_c_string(((char *)__pyx_v_s), 0, strlen(((char *)__pyx_v_s)), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__Pyx_decode_c_string(((char *)__pyx_v_s), 0, strlen(((char *)__pyx_v_s)), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_r = ((PyObject *)__pyx_t_1);
__pyx_t_1 = 0;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1306
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1302
* if python.LXML_UNICODE_STRINGS:
* return s.decode('UTF-8')
* spos = s # <<<<<<<<<<<<<<
*/
__pyx_v_spos = __pyx_v_s;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1307
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1303
* return s.decode('UTF-8')
* spos = s
* is_non_ascii = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_is_non_ascii = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1308
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1304
* spos = s
* is_non_ascii = 0
* while spos[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_spos[0]) != '\x00');
if (!__pyx_t_2) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1309
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1305
* is_non_ascii = 0
* while spos[0] != c'\0':
* if spos[0] & 0x80: # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_spos[0]) & 0x80);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1310
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1306
* while spos[0] != c'\0':
* if spos[0] & 0x80:
* is_non_ascii = 1 # <<<<<<<<<<<<<<
*/
__pyx_v_is_non_ascii = 1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1311
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1307
* if spos[0] & 0x80:
* is_non_ascii = 1
* break # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1312
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1308
* is_non_ascii = 1
* break
* spos += 1 # <<<<<<<<<<<<<<
}
__pyx_L5_break:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1313
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1309
* break
* spos += 1
* slen = spos - s # <<<<<<<<<<<<<<
*/
__pyx_v_slen = (__pyx_v_spos - __pyx_v_s);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1314
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1310
* spos += 1
* slen = spos - s
* if spos[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_spos[0]) != '\x00');
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1315
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1311
* slen = spos - s
* if spos[0] != c'\0':
* slen += tree.xmlStrlen(spos) # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1316
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1312
* if spos[0] != c'\0':
* slen += tree.xmlStrlen(spos)
* if is_non_ascii: # <<<<<<<<<<<<<<
*/
if (__pyx_v_is_non_ascii) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1317
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1313
* slen += tree.xmlStrlen(spos)
* if is_non_ascii:
* return s[:slen].decode('UTF-8') # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__Pyx_decode_c_string(((char *)__pyx_v_s), 0, __pyx_v_slen, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1317; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__Pyx_decode_c_string(((char *)__pyx_v_s), 0, __pyx_v_slen, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_r = ((PyObject *)__pyx_t_1);
__pyx_t_1 = 0;
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1318
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1314
* if is_non_ascii:
* return s[:slen].decode('UTF-8')
* return <bytes>s[:slen] # <<<<<<<<<<<<<<
* cdef bytes _utf8(object s):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyBytes_FromStringAndSize(((const char*)__pyx_v_s) + 0, __pyx_v_slen - 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyBytes_FromStringAndSize(((const char*)__pyx_v_s) + 0, __pyx_v_slen - 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1314; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_INCREF(((PyObject *)((PyObject*)__pyx_t_1)));
__pyx_r = ((PyObject *)__pyx_t_1);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1320
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1316
* return <bytes>s[:slen]
*
* cdef bytes _utf8(object s): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_utf8", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1327
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1323
* cdef int invalid
* cdef bytes utf8_string
* if not python.IS_PYTHON3 and type(s) is bytes: # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1328
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1324
* cdef bytes utf8_string
* if not python.IS_PYTHON3 and type(s) is bytes:
* utf8_string = <bytes>s # <<<<<<<<<<<<<<
__Pyx_INCREF(((PyObject *)((PyObject*)__pyx_v_s)));
__pyx_v_utf8_string = ((PyObject*)__pyx_v_s);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1329
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1325
* if not python.IS_PYTHON3 and type(s) is bytes:
* utf8_string = <bytes>s
* invalid = check_string_utf8(utf8_string) # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1330
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1326
* utf8_string = <bytes>s
* invalid = check_string_utf8(utf8_string)
* elif isinstance(s, unicode): # <<<<<<<<<<<<<<
__pyx_t_3 = PyUnicode_Check(__pyx_v_s);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1331
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1327
* invalid = check_string_utf8(utf8_string)
* elif isinstance(s, unicode):
* utf8_string = (<unicode>s).encode('utf8') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_s == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_4 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_s))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_s))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
- if (!(likely(PyBytes_CheckExact(((PyObject *)__pyx_t_4)))||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(((PyObject *)__pyx_t_4))->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(((PyObject *)__pyx_t_4)))||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(((PyObject *)__pyx_t_4))->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1332
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1328
* elif isinstance(s, unicode):
* utf8_string = (<unicode>s).encode('utf8')
* invalid = check_string_utf8(utf8_string) == -1 # non-XML? # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1333
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1329
* utf8_string = (<unicode>s).encode('utf8')
* invalid = check_string_utf8(utf8_string) == -1 # non-XML?
* elif isinstance(s, bytes): # <<<<<<<<<<<<<<
__pyx_t_3 = PyBytes_Check(__pyx_v_s);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1334
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1330
* invalid = check_string_utf8(utf8_string) == -1 # non-XML?
* elif isinstance(s, bytes):
* utf8_string = bytes(s) # <<<<<<<<<<<<<<
* invalid = check_string_utf8(utf8_string)
* else:
*/
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_s);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_s);
__Pyx_GIVEREF(__pyx_v_s);
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)(&PyBytes_Type))), ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__pyx_v_utf8_string = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1335
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1331
* elif isinstance(s, bytes):
* utf8_string = bytes(s)
* invalid = check_string_utf8(utf8_string) # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1337
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1333
* invalid = check_string_utf8(utf8_string)
* else:
* raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__) # <<<<<<<<<<<<<<
* if invalid:
* raise ValueError(
*/
- __pyx_t_5 = PyObject_GetAttr(((PyObject *)Py_TYPE(__pyx_v_s)), __pyx_n_s____name__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetAttr(((PyObject *)Py_TYPE(__pyx_v_s)), __pyx_n_s____name__); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_25), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_25), __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_4));
__Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1338
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1334
* else:
* raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
* if invalid: # <<<<<<<<<<<<<<
*/
if (__pyx_v_invalid) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1339
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1335
* raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
* if invalid:
* raise ValueError( # <<<<<<<<<<<<<<
* "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
* return utf8_string
*/
- __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_27), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_27), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_Raise(__pyx_t_4, 0, 0, 0);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1341
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1337
* raise ValueError(
* "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
* return utf8_string # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1343
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1339
* return utf8_string
*
* cdef bytes _utf8orNone(object s): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_utf8orNone", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1344
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1340
*
* cdef bytes _utf8orNone(object s):
* return _utf8(s) if s is not None else None # <<<<<<<<<<<<<<
__Pyx_XDECREF(((PyObject *)__pyx_r));
__pyx_t_2 = (__pyx_v_s != Py_None);
if (__pyx_t_2) {
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_s)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_s)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_t_1 = __pyx_t_3;
__pyx_t_3 = 0;
__Pyx_INCREF(Py_None);
__pyx_t_1 = Py_None;
}
- if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
goto __pyx_L0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1346
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1342
* return _utf8(s) if s is not None else None
*
* cdef bint _isFilePath(const_xmlChar* c_path): # <<<<<<<<<<<<<<
int __pyx_t_4;
__Pyx_RefNannySetupContext("_isFilePath", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1350
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1346
* cdef xmlChar c
* # test if it looks like an absolute Unix path or a Windows network path
* if c_path[0] == c'/': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_path[0]) == '/');
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1351
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1347
* # test if it looks like an absolute Unix path or a Windows network path
* if c_path[0] == c'/':
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1353
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1349
* return 1
* # test if it looks like an absolute Windows path
* if (c_path[0] >= c'a' and c_path[0] <= c'z') or \ # <<<<<<<<<<<<<<
}
if (!__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1354
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1350
* # test if it looks like an absolute Windows path
* if (c_path[0] >= c'a' and c_path[0] <= c'z') or \
* (c_path[0] >= c'A' and c_path[0] <= c'Z'): # <<<<<<<<<<<<<<
}
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1355
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1351
* if (c_path[0] >= c'a' and c_path[0] <= c'z') or \
* (c_path[0] >= c'A' and c_path[0] <= c'Z'):
* if c_path[1] == c':': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_path[1]) == ':');
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1356
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1352
* (c_path[0] >= c'A' and c_path[0] <= c'Z'):
* if c_path[1] == c':':
* return 1 # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1358
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1354
* return 1
* # test if it looks like a relative path
* while c_path[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_path[0]) != '\x00');
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1359
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1355
* # test if it looks like a relative path
* while c_path[0] != c'\0':
* c = c_path[0] # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_c_path[0]);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1364
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1360
* elif c == c'/':
* return 1
* elif c == c'\\': # <<<<<<<<<<<<<<
*/
switch (__pyx_v_c) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1360
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1356
* while c_path[0] != c'\0':
* c = c_path[0]
* if c == c':': # <<<<<<<<<<<<<<
*/
case ':':
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1361
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1357
* c = c_path[0]
* if c == c':':
* return 0 # <<<<<<<<<<<<<<
goto __pyx_L0;
break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1362
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1358
* if c == c':':
* return 0
* elif c == c'/': # <<<<<<<<<<<<<<
*/
case '/':
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1363
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1359
* return 0
* elif c == c'/':
* return 1 # <<<<<<<<<<<<<<
goto __pyx_L0;
break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1364
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1360
* elif c == c'/':
* return 1
* elif c == c'\\': # <<<<<<<<<<<<<<
*/
case '\\':
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1365
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1361
* return 1
* elif c == c'\\':
* return 1 # <<<<<<<<<<<<<<
break;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1366
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1362
* elif c == c'\\':
* return 1
* c_path += 1 # <<<<<<<<<<<<<<
__pyx_v_c_path = (__pyx_v_c_path + 1);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1367
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1363
* return 1
* c_path += 1
* return 1 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1369
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1365
* return 1
*
* cdef object _encodeFilename(object filename): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_encodeFilename", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1372
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1368
* u"""Make sure a filename is 8-bit encoded (or None).
* """
* if filename is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_filename == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1373
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1369
* """
* if filename is None:
* return None # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1374
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1370
* if filename is None:
* return None
* elif isinstance(filename, bytes): # <<<<<<<<<<<<<<
__pyx_t_1 = PyBytes_Check(__pyx_v_filename);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1375
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1371
* return None
* elif isinstance(filename, bytes):
* return filename # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1376
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1372
* elif isinstance(filename, bytes):
* return filename
* elif isinstance(filename, unicode): # <<<<<<<<<<<<<<
__pyx_t_1 = PyUnicode_Check(__pyx_v_filename);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1377
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1373
* return filename
* elif isinstance(filename, unicode):
* filename8 = (<unicode>filename).encode('utf8') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_filename == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_v_filename8 = ((PyObject *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1378
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1374
* elif isinstance(filename, unicode):
* filename8 = (<unicode>filename).encode('utf8')
* if _isFilePath(<unsigned char*>filename8): # <<<<<<<<<<<<<<
* try:
* return python.PyUnicode_AsEncodedString(
*/
- __pyx_t_3 = __Pyx_PyBytes_AsUString(__pyx_v_filename8); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyBytes_AsUString(__pyx_v_filename8); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_1 = __pyx_f_4lxml_5etree__isFilePath(((unsigned char *)__pyx_t_3));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1379
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1375
* filename8 = (<unicode>filename).encode('utf8')
* if _isFilePath(<unsigned char*>filename8):
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_6);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1380
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1376
* if _isFilePath(<unsigned char*>filename8):
* try:
* return python.PyUnicode_AsEncodedString( # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1381
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1377
* try:
* return python.PyUnicode_AsEncodedString(
* filename, _C_FILENAME_ENCODING, NULL) # <<<<<<<<<<<<<<
* except UnicodeEncodeError:
* pass
*/
- __pyx_t_2 = ((PyObject *)PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1380; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_2 = ((PyObject *)PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1376; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1382
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1378
* return python.PyUnicode_AsEncodedString(
* filename, _C_FILENAME_ENCODING, NULL)
* except UnicodeEncodeError: # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1384
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1380
* except UnicodeEncodeError:
* pass
* return filename8 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1386
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1382
* return filename8
* else:
* raise TypeError("Argument must be string or unicode.") # <<<<<<<<<<<<<<
*
* cdef object _decodeFilename(const_xmlChar* c_path):
*/
- __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_29), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L3:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1388
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1384
* raise TypeError("Argument must be string or unicode.")
*
* cdef object _decodeFilename(const_xmlChar* c_path): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_decodeFilename", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1391
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1387
* u"""Make the filename a unicode string if we are in Py3.
* """
* c_len = tree.xmlStrlen(c_path) # <<<<<<<<<<<<<<
*/
__pyx_v_c_len = xmlStrlen(__pyx_v_c_path);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1392
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1388
* """
* c_len = tree.xmlStrlen(c_path)
* if _isFilePath(c_path): # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_f_4lxml_5etree__isFilePath(__pyx_v_c_path);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1393
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1389
* c_len = tree.xmlStrlen(c_path)
* if _isFilePath(c_path):
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_4);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1394
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1390
* if _isFilePath(c_path):
* try:
* return python.PyUnicode_Decode( # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1395
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1391
* try:
* return python.PyUnicode_Decode(
* <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL) # <<<<<<<<<<<<<<
* except UnicodeDecodeError:
* pass
*/
- __pyx_t_5 = ((PyObject *)PyUnicode_Decode(((const char *)__pyx_v_c_path), __pyx_v_c_len, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1394; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+ __pyx_t_5 = ((PyObject *)PyUnicode_Decode(((const char *)__pyx_v_c_path), __pyx_v_c_len, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1390; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_r = __pyx_t_5;
__pyx_t_5 = 0;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1396
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1392
* return python.PyUnicode_Decode(
* <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL)
* except UnicodeDecodeError: # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1398
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1394
* except UnicodeDecodeError:
* pass
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_2);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1399
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1395
* pass
* try:
* return (<unsigned char*>c_path)[:c_len].decode('UTF-8') # <<<<<<<<<<<<<<
* # this is a stupid fallback, but it might still work...
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1399; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
+ __pyx_t_5 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1395; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
__pyx_r = ((PyObject *)__pyx_t_5);
__pyx_t_5 = 0;
__pyx_L12_error:;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1400
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1396
* try:
* return (<unsigned char*>c_path)[:c_len].decode('UTF-8')
* except UnicodeDecodeError: # <<<<<<<<<<<<<<
__pyx_t_6 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
if (__pyx_t_6) {
__Pyx_AddTraceback("lxml.etree._decodeFilename", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1400; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
+ if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_8);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1402
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1398
* except UnicodeDecodeError:
* # this is a stupid fallback, but it might still work...
* return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace') # <<<<<<<<<<<<<<
* cdef object _encodeFilenameUTF8(object filename):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, __pyx_k__replace, PyUnicode_DecodeLatin1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1402; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
+ __pyx_t_9 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)__pyx_v_c_path)), 0, __pyx_v_c_len, NULL, __pyx_k__replace, PyUnicode_DecodeLatin1)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1398; __pyx_clineno = __LINE__; goto __pyx_L14_except_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_9));
__pyx_r = ((PyObject *)__pyx_t_9);
__pyx_t_9 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1404
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1400
* return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace')
*
* cdef object _encodeFilenameUTF8(object filename): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("_encodeFilenameUTF8", 0);
__Pyx_INCREF(__pyx_v_filename);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1409
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1405
* """
* cdef char* c_filename
* if filename is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_filename == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1410
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1406
* cdef char* c_filename
* if filename is None:
* return None # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1411
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1407
* if filename is None:
* return None
* elif isinstance(filename, bytes): # <<<<<<<<<<<<<<
__pyx_t_1 = PyBytes_Check(__pyx_v_filename);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1412
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1408
* return None
* elif isinstance(filename, bytes):
* if not check_string_utf8(<bytes>filename): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_f_4lxml_5etree_check_string_utf8(((PyObject*)__pyx_v_filename)));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1414
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1410
* if not check_string_utf8(<bytes>filename):
* # plain ASCII!
* return filename # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1415
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1411
* # plain ASCII!
* return filename
* c_filename = _cstr(<bytes>filename) # <<<<<<<<<<<<<<
*/
__pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1416
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1412
* return filename
* c_filename = _cstr(<bytes>filename)
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_4);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1419
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1415
* # try to decode with default encoding
* filename = python.PyUnicode_Decode(
* c_filename, len(<bytes>filename), # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_filename == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
}
- __pyx_t_5 = PyBytes_GET_SIZE(((PyObject *)((PyObject*)__pyx_v_filename))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1419; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_5 = PyBytes_GET_SIZE(((PyObject *)((PyObject*)__pyx_v_filename))); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1420
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1416
* filename = python.PyUnicode_Decode(
* c_filename, len(<bytes>filename),
* _C_FILENAME_ENCODING, NULL) # <<<<<<<<<<<<<<
* except UnicodeDecodeError as decode_exc:
* try:
*/
- __pyx_t_6 = ((PyObject *)PyUnicode_Decode(__pyx_v_c_filename, __pyx_t_5, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1418; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_6 = ((PyObject *)PyUnicode_Decode(__pyx_v_c_filename, __pyx_t_5, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_v_filename);
__pyx_v_filename = __pyx_t_6;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1421
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1417
* c_filename, len(<bytes>filename),
* _C_FILENAME_ENCODING, NULL)
* except UnicodeDecodeError as decode_exc: # <<<<<<<<<<<<<<
__pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1421; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1417; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
__pyx_v_decode_exc = __pyx_t_8;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1422
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1418
* _C_FILENAME_ENCODING, NULL)
* except UnicodeDecodeError as decode_exc:
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_12);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1424
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1420
* try:
* # try if it's proper UTF-8
* (<bytes>filename).decode('utf8') # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_filename == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1420; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
}
- __pyx_t_13 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_filename)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1424; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
+ __pyx_t_13 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_filename)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1420; __pyx_clineno = __LINE__; goto __pyx_L15_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_13));
__Pyx_DECREF(((PyObject *)__pyx_t_13)); __pyx_t_13 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1425
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1421
* # try if it's proper UTF-8
* (<bytes>filename).decode('utf8')
* return filename # <<<<<<<<<<<<<<
__pyx_L15_error:;
__Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1426
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1422
* (<bytes>filename).decode('utf8')
* return filename
* except UnicodeDecodeError: # <<<<<<<<<<<<<<
__pyx_t_7 = PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1426; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+ if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1422; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
__Pyx_GOTREF(__pyx_t_13);
__Pyx_GOTREF(__pyx_t_14);
__Pyx_GOTREF(__pyx_t_15);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1427
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1423
* return filename
* except UnicodeDecodeError:
* raise decode_exc # otherwise re-raise original exception # <<<<<<<<<<<<<<
* return (<unicode>filename).encode('utf8')
*/
__Pyx_Raise(__pyx_v_decode_exc, 0, 0, 0);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1423; __pyx_clineno = __LINE__; goto __pyx_L17_except_error;}
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
__Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1428
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1424
* except UnicodeDecodeError:
* raise decode_exc # otherwise re-raise original exception
* if isinstance(filename, unicode): # <<<<<<<<<<<<<<
__pyx_t_1 = PyUnicode_Check(__pyx_v_filename);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1429
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1425
* raise decode_exc # otherwise re-raise original exception
* if isinstance(filename, unicode):
* return (<unicode>filename).encode('utf8') # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
if (unlikely(__pyx_v_filename == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "encode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_9 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = ((PyObject *)PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename))); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_9));
__pyx_r = ((PyObject *)__pyx_t_9);
__pyx_t_9 = 0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1431
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1427
* return (<unicode>filename).encode('utf8')
* else:
* raise TypeError("Argument must be string or unicode.") # <<<<<<<<<<<<<<
*
* cdef tuple _getNsTag(tag):
*/
- __pyx_t_9 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_k_tuple_30), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_Raise(__pyx_t_9, 0, 0, 0);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L25:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1433
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1429
* raise TypeError("Argument must be string or unicode.")
*
* cdef tuple _getNsTag(tag): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_getNsTag", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1437
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1433
* Return None for NS uri if no namespace URI provided.
* """
* return __getNsTag(tag, 0) # <<<<<<<<<<<<<<
* cdef tuple _getNsTagWithEmptyNs(tag):
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1433; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1439
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1435
* return __getNsTag(tag, 0)
*
* cdef tuple _getNsTagWithEmptyNs(tag): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_getNsTagWithEmptyNs", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1444
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1440
* part is '{}'.
* """
* return __getNsTag(tag, 1) # <<<<<<<<<<<<<<
* cdef tuple __getNsTag(tag, bint empty_ns):
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 1)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1446
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1442
* return __getNsTag(tag, 1)
*
* cdef tuple __getNsTag(tag, bint empty_ns): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("__getNsTag", 0);
__Pyx_INCREF(__pyx_v_tag);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1451
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1447
* cdef Py_ssize_t taglen
* cdef Py_ssize_t nslen
* cdef bytes ns = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_ns = ((PyObject*)Py_None);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1453
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1449
* cdef bytes ns = None
* # _isString() is much faster than isinstance()
* if not _isString(tag) and isinstance(tag, QName): # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1454
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1450
* # _isString() is much faster than isinstance()
* if not _isString(tag) and isinstance(tag, QName):
* tag = (<QName>tag).text # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1455
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1451
* if not _isString(tag) and isinstance(tag, QName):
* tag = (<QName>tag).text
* tag = _utf8(tag) # <<<<<<<<<<<<<<
* c_tag = _cstr(tag)
* if c_tag[0] == c'{':
*/
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_tag)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_tag)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_v_tag);
__pyx_v_tag = __pyx_t_4;
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1456
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1452
* tag = (<QName>tag).text
* tag = _utf8(tag)
* c_tag = _cstr(tag) # <<<<<<<<<<<<<<
*/
__pyx_v_c_tag = PyBytes_AS_STRING(__pyx_v_tag);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1457
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1453
* tag = _utf8(tag)
* c_tag = _cstr(tag)
* if c_tag[0] == c'{': # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_c_tag[0]) == '{');
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1458
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1454
* c_tag = _cstr(tag)
* if c_tag[0] == c'{':
* c_tag += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_c_tag = (__pyx_v_c_tag + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1459
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1455
* if c_tag[0] == c'{':
* c_tag += 1
* c_ns_end = cstring_h.strchr(c_tag, c'}') # <<<<<<<<<<<<<<
*/
__pyx_v_c_ns_end = strchr(__pyx_v_c_tag, '}');
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1460
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1456
* c_tag += 1
* c_ns_end = cstring_h.strchr(c_tag, c'}')
* if c_ns_end is NULL: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_c_ns_end == NULL);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1461
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1457
* c_ns_end = cstring_h.strchr(c_tag, c'}')
* if c_ns_end is NULL:
* raise ValueError, u"Invalid tag name" # <<<<<<<<<<<<<<
* taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
*/
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_31), 0, 0);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1462
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1458
* if c_ns_end is NULL:
* raise ValueError, u"Invalid tag name"
* nslen = c_ns_end - c_tag # <<<<<<<<<<<<<<
*/
__pyx_v_nslen = (__pyx_v_c_ns_end - __pyx_v_c_tag);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1463
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1459
* raise ValueError, u"Invalid tag name"
* nslen = c_ns_end - c_tag
* taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2 # <<<<<<<<<<<<<<
*/
__pyx_v_taglen = ((PyBytes_GET_SIZE(__pyx_v_tag) - __pyx_v_nslen) - 2);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1464
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1460
* nslen = c_ns_end - c_tag
* taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
* if taglen == 0: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_taglen == 0);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1465
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1461
* taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
* if taglen == 0:
* raise ValueError, u"Empty tag name" # <<<<<<<<<<<<<<
* ns = <bytes>c_tag[:nslen]
*/
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_32), 0, 0);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1466
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1462
* if taglen == 0:
* raise ValueError, u"Empty tag name"
* if nslen > 0: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_nslen > 0);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1467
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1463
* raise ValueError, u"Empty tag name"
* if nslen > 0:
* ns = <bytes>c_tag[:nslen] # <<<<<<<<<<<<<<
* elif empty_ns:
* ns = b''
*/
- __pyx_t_4 = PyBytes_FromStringAndSize(((const char*)__pyx_v_c_tag) + 0, __pyx_v_nslen - 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyBytes_FromStringAndSize(((const char*)__pyx_v_c_tag) + 0, __pyx_v_nslen - 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1463; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_INCREF(((PyObject *)((PyObject*)__pyx_t_4)));
__Pyx_DECREF(((PyObject *)__pyx_v_ns));
goto __pyx_L7;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1468
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1464
* if nslen > 0:
* ns = <bytes>c_tag[:nslen]
* elif empty_ns: # <<<<<<<<<<<<<<
*/
if (__pyx_v_empty_ns) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1469
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1465
* ns = <bytes>c_tag[:nslen]
* elif empty_ns:
* ns = b'' # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1470
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1466
* elif empty_ns:
* ns = b''
* tag = <bytes>c_ns_end[1:taglen+1] # <<<<<<<<<<<<<<
* elif python.PyBytes_GET_SIZE(tag) == 0:
* raise ValueError, u"Empty tag name"
*/
- __pyx_t_4 = PyBytes_FromStringAndSize(((const char*)__pyx_v_c_ns_end) + 1, (__pyx_v_taglen + 1) - 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyBytes_FromStringAndSize(((const char*)__pyx_v_c_ns_end) + 1, (__pyx_v_taglen + 1) - 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_INCREF(((PyObject *)((PyObject*)__pyx_t_4)));
__Pyx_DECREF(__pyx_v_tag);
goto __pyx_L4;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1471
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1467
* ns = b''
* tag = <bytes>c_ns_end[1:taglen+1]
* elif python.PyBytes_GET_SIZE(tag) == 0: # <<<<<<<<<<<<<<
__pyx_t_3 = (PyBytes_GET_SIZE(__pyx_v_tag) == 0);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1472
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1468
* tag = <bytes>c_ns_end[1:taglen+1]
* elif python.PyBytes_GET_SIZE(tag) == 0:
* raise ValueError, u"Empty tag name" # <<<<<<<<<<<<<<
*
*/
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_32), 0, 0);
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1473
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1469
* elif python.PyBytes_GET_SIZE(tag) == 0:
* raise ValueError, u"Empty tag name"
* return ns, tag # <<<<<<<<<<<<<<
* cdef inline int _pyXmlNameIsValid(name_utf8):
*/
__Pyx_XDECREF(((PyObject *)__pyx_r));
- __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1473; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(((PyObject *)__pyx_v_ns));
PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_ns));
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1475
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1471
* return ns, tag
*
* cdef inline int _pyXmlNameIsValid(name_utf8): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_pyXmlNameIsValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1476
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1472
*
* cdef inline int _pyXmlNameIsValid(name_utf8):
* return _xmlNameIsValid(_xcstr(name_utf8)) # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1478
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1474
* return _xmlNameIsValid(_xcstr(name_utf8))
*
* cdef inline int _pyHtmlNameIsValid(name_utf8): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_pyHtmlNameIsValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1479
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1475
*
* cdef inline int _pyHtmlNameIsValid(name_utf8):
* return _htmlNameIsValid(_xcstr(name_utf8)) # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1481
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1477
* return _htmlNameIsValid(_xcstr(name_utf8))
*
* cdef inline int _xmlNameIsValid(const_xmlChar* c_name): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_xmlNameIsValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1482
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1478
*
* cdef inline int _xmlNameIsValid(const_xmlChar* c_name):
* return tree.xmlValidateNCName(c_name, 0) == 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1484
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1480
* return tree.xmlValidateNCName(c_name, 0) == 0
*
* cdef int _htmlNameIsValid(const_xmlChar* c_name): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_htmlNameIsValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1486
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1482
* cdef int _htmlNameIsValid(const_xmlChar* c_name):
* cdef xmlChar c
* if c_name is NULL or c_name[0] == c'\0': # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1487
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1483
* cdef xmlChar c
* if c_name is NULL or c_name[0] == c'\0':
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1488
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1484
* if c_name is NULL or c_name[0] == c'\0':
* return 0
* while c_name[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_3 = ((__pyx_v_c_name[0]) != '\x00');
if (!__pyx_t_3) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1489
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1485
* return 0
* while c_name[0] != c'\0':
* c = c_name[0] # <<<<<<<<<<<<<<
*/
__pyx_v_c = (__pyx_v_c_name[0]);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1490
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1486
* while c_name[0] != c'\0':
* c = c_name[0]
* if c in (c'&', c'<', c'>', c'/', c'"', c"'", # <<<<<<<<<<<<<<
case '"':
case '\'':
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1491
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1487
* c = c_name[0]
* if c in (c'&', c'<', c'>', c'/', c'"', c"'",
* c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '): # <<<<<<<<<<<<<<
case '\r':
case ' ':
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1492
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1488
* if c in (c'&', c'<', c'>', c'/', c'"', c"'",
* c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
* return 0 # <<<<<<<<<<<<<<
break;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1493
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1489
* c'\t', c'\n', c'\x0B', c'\x0C', c'\r', c' '):
* return 0
* c_name += 1 # <<<<<<<<<<<<<<
__pyx_v_c_name = (__pyx_v_c_name + 1);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1494
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1490
* return 0
* c_name += 1
* return 1 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1496
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1492
* return 1
*
* cdef bint _characterReferenceIsValid(const_xmlChar* c_name): # <<<<<<<<<<<<<<
int __pyx_t_3;
__Pyx_RefNannySetupContext("_characterReferenceIsValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1498
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1494
* cdef bint _characterReferenceIsValid(const_xmlChar* c_name):
* cdef bint is_hex
* if c_name[0] == c'x': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_name[0]) == 'x');
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1499
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1495
* cdef bint is_hex
* if c_name[0] == c'x':
* c_name += 1 # <<<<<<<<<<<<<<
*/
__pyx_v_c_name = (__pyx_v_c_name + 1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1500
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1496
* if c_name[0] == c'x':
* c_name += 1
* is_hex = 1 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1502
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1498
* is_hex = 1
* else:
* is_hex = 0 # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1503
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1499
* else:
* is_hex = 0
* if c_name[0] == c'\0': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_name[0]) == '\x00');
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1504
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1500
* is_hex = 0
* if c_name[0] == c'\0':
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1505
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1501
* if c_name[0] == c'\0':
* return 0
* while c_name[0] != c'\0': # <<<<<<<<<<<<<<
__pyx_t_1 = ((__pyx_v_c_name[0]) != '\x00');
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1506
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1502
* return 0
* while c_name[0] != c'\0':
* if c_name[0] < c'0' or c_name[0] > c'9': # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1507
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1503
* while c_name[0] != c'\0':
* if c_name[0] < c'0' or c_name[0] > c'9':
* if not is_hex: # <<<<<<<<<<<<<<
__pyx_t_3 = (!__pyx_v_is_hex);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1508
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1504
* if c_name[0] < c'0' or c_name[0] > c'9':
* if not is_hex:
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1509
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1505
* if not is_hex:
* return 0
* if not (c'a' <= c_name[0] <= c'f'): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_t_3);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1510
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1506
* return 0
* if not (c'a' <= c_name[0] <= c'f'):
* if not (c'A' <= c_name[0] <= c'F'): # <<<<<<<<<<<<<<
__pyx_t_3 = (!__pyx_t_1);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1511
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1507
* if not (c'a' <= c_name[0] <= c'f'):
* if not (c'A' <= c_name[0] <= c'F'):
* return 0 # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1512
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1508
* if not (c'A' <= c_name[0] <= c'F'):
* return 0
* c_name += 1 # <<<<<<<<<<<<<<
__pyx_v_c_name = (__pyx_v_c_name + 1);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1513
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1509
* return 0
* c_name += 1
* return 1 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1515
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1511
* return 1
*
* cdef int _tagValidOrRaise(tag_utf) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_tagValidOrRaise", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1516
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1512
*
* cdef int _tagValidOrRaise(tag_utf) except -1:
* if not _pyXmlNameIsValid(tag_utf): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1518
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1514
* if not _pyXmlNameIsValid(tag_utf):
* raise ValueError("Invalid tag name %r" %
* (<bytes>tag_utf).decode('utf8')) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_tag_utf == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_33), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_33), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3));
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1519
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1515
* raise ValueError("Invalid tag name %r" %
* (<bytes>tag_utf).decode('utf8'))
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1521
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1517
* return 0
*
* cdef int _htmlTagValidOrRaise(tag_utf) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_htmlTagValidOrRaise", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1522
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1518
*
* cdef int _htmlTagValidOrRaise(tag_utf) except -1:
* if not _pyHtmlNameIsValid(tag_utf): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_f_4lxml_5etree__pyHtmlNameIsValid(__pyx_v_tag_utf));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1524
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1520
* if not _pyHtmlNameIsValid(tag_utf):
* raise ValueError("Invalid HTML tag name %r" %
* (<bytes>tag_utf).decode('utf8')) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_tag_utf == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_34), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_34), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3));
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1525
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1521
* raise ValueError("Invalid HTML tag name %r" %
* (<bytes>tag_utf).decode('utf8'))
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1527
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1523
* return 0
*
* cdef int _attributeValidOrRaise(name_utf) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_attributeValidOrRaise", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1528
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1524
*
* cdef int _attributeValidOrRaise(name_utf) except -1:
* if not _pyXmlNameIsValid(name_utf): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_name_utf));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1530
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1526
* if not _pyXmlNameIsValid(name_utf):
* raise ValueError("Invalid attribute name %r" %
* (<bytes>name_utf).decode('utf8')) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_name_utf == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_name_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_name_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_35), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3));
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1531
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1527
* raise ValueError("Invalid attribute name %r" %
* (<bytes>name_utf).decode('utf8'))
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1533
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1529
* return 0
*
* cdef int _prefixValidOrRaise(tag_utf) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_prefixValidOrRaise", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1534
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1530
*
* cdef int _prefixValidOrRaise(tag_utf) except -1:
* if not _pyXmlNameIsValid(tag_utf): # <<<<<<<<<<<<<<
__pyx_t_1 = (!__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1536
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1532
* if not _pyXmlNameIsValid(tag_utf):
* raise ValueError("Invalid namespace prefix %r" %
* (<bytes>tag_utf).decode('utf8')) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_tag_utf == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_tag_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_36), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_36), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3));
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1537
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1533
* raise ValueError("Invalid namespace prefix %r" %
* (<bytes>tag_utf).decode('utf8'))
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1539
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1535
* return 0
*
* cdef int _uriValidOrRaise(uri_utf) except -1: # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_uriValidOrRaise", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1540
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1536
*
* cdef int _uriValidOrRaise(uri_utf) except -1:
* cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf)) # <<<<<<<<<<<<<<
*/
__pyx_v_c_uri = xmlParseURI(PyBytes_AS_STRING(__pyx_v_uri_utf));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1541
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1537
* cdef int _uriValidOrRaise(uri_utf) except -1:
* cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf))
* if c_uri is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_c_uri == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1543
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1539
* if c_uri is NULL:
* raise ValueError("Invalid namespace URI %r" %
* (<bytes>uri_utf).decode('utf8')) # <<<<<<<<<<<<<<
*/
if (unlikely(__pyx_v_uri_utf == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_uri_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_uri_utf)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_37), ((PyObject *)__pyx_t_2)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3));
__pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1544
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1540
* raise ValueError("Invalid namespace URI %r" %
* (<bytes>uri_utf).decode('utf8'))
* uri.xmlFreeURI(c_uri) # <<<<<<<<<<<<<<
*/
xmlFreeURI(__pyx_v_c_uri);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1545
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1541
* (<bytes>uri_utf).decode('utf8'))
* uri.xmlFreeURI(c_uri)
* return 0 # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1547
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1543
* return 0
*
* cdef inline object _namespacedName(xmlNode* c_node): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_namespacedName", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1548
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1544
*
* cdef inline object _namespacedName(xmlNode* c_node):
* return _namespacedNameFromNsName(_getNs(c_node), c_node.name) # <<<<<<<<<<<<<<
* cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(_getNs(__pyx_v_c_node), __pyx_v_c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(_getNs(__pyx_v_c_node), __pyx_v_c_node->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1550
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1546
* return _namespacedNameFromNsName(_getNs(c_node), c_node.name)
*
* cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_namespacedNameFromNsName", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1551
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1547
*
* cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
* if href is NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_href == NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1552
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1548
* cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
* if href is NULL:
* return funicode(name) # <<<<<<<<<<<<<<
* return python.PyUnicode_FromFormat("{%s}%s", href, name)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1553
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1549
* if href is NULL:
* return funicode(name)
* elif python.LXML_UNICODE_STRINGS and python.PY_VERSION_HEX >= 0x02060000: # <<<<<<<<<<<<<<
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1554
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1550
* return funicode(name)
* elif python.LXML_UNICODE_STRINGS and python.PY_VERSION_HEX >= 0x02060000:
* return python.PyUnicode_FromFormat("{%s}%s", href, name) # <<<<<<<<<<<<<<
* s = python.PyBytes_FromFormat("{%s}%s", href, name)
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = ((PyObject *)PyUnicode_FromFormat(__pyx_k_38, __pyx_v_href, __pyx_v_name)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)PyUnicode_FromFormat(__pyx_k_38, __pyx_v_href, __pyx_v_name)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1556
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1552
* return python.PyUnicode_FromFormat("{%s}%s", href, name)
* else:
* s = python.PyBytes_FromFormat("{%s}%s", href, name) # <<<<<<<<<<<<<<
* if python.LXML_UNICODE_STRINGS or isutf8(_xcstr(s)):
* return (<bytes>s).decode('utf8')
*/
- __pyx_t_2 = ((PyObject *)PyBytes_FromFormat(__pyx_k_38, __pyx_v_href, __pyx_v_name)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1556; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)PyBytes_FromFormat(__pyx_k_38, __pyx_v_href, __pyx_v_name)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_s = ((PyObject*)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1557
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1553
* else:
* s = python.PyBytes_FromFormat("{%s}%s", href, name)
* if python.LXML_UNICODE_STRINGS or isutf8(_xcstr(s)): # <<<<<<<<<<<<<<
}
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1558
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1554
* s = python.PyBytes_FromFormat("{%s}%s", href, name)
* if python.LXML_UNICODE_STRINGS or isutf8(_xcstr(s)):
* return (<bytes>s).decode('utf8') # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
if (unlikely(((PyObject *)__pyx_v_s) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "decode");
- {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_s)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__Pyx_decode_bytes(((PyObject *)((PyObject*)__pyx_v_s)), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
__pyx_r = ((PyObject *)__pyx_t_2);
__pyx_t_2 = 0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1560
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1556
* return (<bytes>s).decode('utf8')
* else:
* return s # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1562
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1558
* return s
*
* cdef _getFilenameForFile(source): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_getFilenameForFile", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1568
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1564
* """
* # urllib2 provides a geturl() method
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1569
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1565
* # urllib2 provides a geturl() method
* try:
* return source.geturl() # <<<<<<<<<<<<<<
* pass
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__geturl); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__geturl); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_4, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1565; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_5;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1570
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1566
* try:
* return source.geturl()
* except: # <<<<<<<<<<<<<<
__pyx_L10_try_end:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1573
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1569
* pass
* # file instances have a name attribute
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_1);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1574
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1570
* # file instances have a name attribute
* try:
* filename = source.name # <<<<<<<<<<<<<<
* if _isString(filename):
* return os_path_abspath(filename)
*/
- __pyx_t_5 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1574; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
+ __pyx_t_5 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1570; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_filename = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1575
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1571
* try:
* filename = source.name
* if _isString(filename): # <<<<<<<<<<<<<<
__pyx_t_6 = _isString(__pyx_v_filename);
if (__pyx_t_6) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1576
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1572
* filename = source.name
* if _isString(filename):
* return os_path_abspath(filename) # <<<<<<<<<<<<<<
* pass
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1576; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_filename);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_filename);
__Pyx_GIVEREF(__pyx_v_filename);
- __pyx_t_4 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1576; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1572; __pyx_clineno = __LINE__; goto __pyx_L11_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__pyx_r = __pyx_t_4;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1577
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1573
* if _isString(filename):
* return os_path_abspath(filename)
* except: # <<<<<<<<<<<<<<
__pyx_L18_try_end:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1580
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1576
* pass
* # gzip file instances have a filename attribute (before Py3k)
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1581
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1577
* # gzip file instances have a filename attribute (before Py3k)
* try:
* filename = source.filename # <<<<<<<<<<<<<<
* if _isString(filename):
* return os_path_abspath(filename)
*/
- __pyx_t_4 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__filename); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1581; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_v_source, __pyx_n_s__filename); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1577; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_XDECREF(__pyx_v_filename);
__pyx_v_filename = __pyx_t_4;
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1582
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1578
* try:
* filename = source.filename
* if _isString(filename): # <<<<<<<<<<<<<<
__pyx_t_6 = _isString(__pyx_v_filename);
if (__pyx_t_6) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1583
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1579
* filename = source.filename
* if _isString(filename):
* return os_path_abspath(filename) # <<<<<<<<<<<<<<
* pass
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_filename);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_filename);
__Pyx_GIVEREF(__pyx_v_filename);
- __pyx_t_5 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1583; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_v_4lxml_5etree_os_path_abspath, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1579; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__pyx_r = __pyx_t_5;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
__Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1584
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1580
* if _isString(filename):
* return os_path_abspath(filename)
* except: # <<<<<<<<<<<<<<
__pyx_L27_try_end:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1587
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1583
* pass
* # can't determine filename
* return None # <<<<<<<<<<<<<<
* for item in tag:
* self._storeTags(item, seen) # <<<<<<<<<<<<<<
*
- * cdef int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
+ * cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
*/
__pyx_t_7 = __pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(__pyx_v_self, __pyx_v_item, __pyx_v_seen); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2547
* self._storeTags(item, seen)
*
- * cdef int cacheTags(self, _Document doc, bint force_into_dict=False) except -1: # <<<<<<<<<<<<<<
+ * cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1: # <<<<<<<<<<<<<<
* """
* Look up the tag names in the doc dict to enable string pointer comparisons.
*/
-static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, struct LxmlDocument *__pyx_v_doc, struct __pyx_opt_args_4lxml_5etree_16_MultiTagMatcher_cacheTags *__pyx_optional_args) {
+static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *__pyx_v_self, struct LxmlDocument *__pyx_v_doc, struct __pyx_opt_args_4lxml_5etree_16_MultiTagMatcher_cacheTags *__pyx_optional_args) {
int __pyx_v_force_into_dict = ((int)0);
size_t __pyx_v_dict_size;
int __pyx_r;
xmlNode *__pyx_t_3;
int __pyx_t_4;
PyObject *__pyx_t_5 = NULL;
- PyObject *__pyx_t_6 = NULL;
int __pyx_lineno = 0;
const char *__pyx_filename = NULL;
int __pyx_clineno = 0;
* else:
* c_node = self._nextNodeMatchTag(c_node)
*/
- __pyx_v_c_node = ((struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self->__pyx_vtab)->_nextNodeAnyTag(__pyx_v_self, __pyx_v_c_node);
+ __pyx_v_c_node = __pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(__pyx_v_self, __pyx_v_c_node);
goto __pyx_L4;
}
/*else*/ {
* c_node = self._nextNodeAnyTag(c_node)
* else:
* c_node = self._nextNodeMatchTag(c_node) # <<<<<<<<<<<<<<
- * self._next_node = (_elementFactory(current_node._doc, c_node)
- * if c_node is not NULL else None)
+ * if c_node is NULL:
+ * self._next_node = None
*/
- __pyx_v_c_node = ((struct __pyx_vtabstruct_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self->__pyx_vtab)->_nextNodeMatchTag(__pyx_v_self, __pyx_v_c_node);
+ __pyx_v_c_node = __pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag(__pyx_v_self, __pyx_v_c_node);
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2717
- * c_node = self._nextNodeMatchTag(c_node)
- * self._next_node = (_elementFactory(current_node._doc, c_node)
- * if c_node is not NULL else None) # <<<<<<<<<<<<<<
- * return current_node
- *
- */
- if ((__pyx_v_c_node != NULL)) {
-
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2716
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2716
* else:
* c_node = self._nextNodeMatchTag(c_node)
- * self._next_node = (_elementFactory(current_node._doc, c_node) # <<<<<<<<<<<<<<
- * if c_node is not NULL else None)
- * return current_node
+ * if c_node is NULL: # <<<<<<<<<<<<<<
+ * self._next_node = None
+ * else:
*/
- __pyx_t_5 = ((PyObject *)__pyx_v_current_node->_doc);
- __Pyx_INCREF(__pyx_t_5);
- __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __Pyx_GOTREF(__pyx_t_6);
- __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- __pyx_t_1 = __pyx_t_6;
- __pyx_t_6 = 0;
- } else {
+ __pyx_t_2 = (__pyx_v_c_node == NULL);
+ if (__pyx_t_2) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2717
* c_node = self._nextNodeMatchTag(c_node)
- * self._next_node = (_elementFactory(current_node._doc, c_node)
- * if c_node is not NULL else None) # <<<<<<<<<<<<<<
- * return current_node
- *
+ * if c_node is NULL:
+ * self._next_node = None # <<<<<<<<<<<<<<
+ * else:
+ * self._next_node = _elementFactory(current_node._doc, c_node)
*/
__Pyx_INCREF(Py_None);
- __pyx_t_1 = Py_None;
+ __Pyx_GIVEREF(Py_None);
+ __Pyx_GOTREF(__pyx_v_self->_next_node);
+ __Pyx_DECREF(((PyObject *)__pyx_v_self->_next_node));
+ __pyx_v_self->_next_node = ((struct LxmlElement *)Py_None);
+ goto __pyx_L5;
}
- if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ /*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2716
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2719
+ * self._next_node = None
* else:
- * c_node = self._nextNodeMatchTag(c_node)
- * self._next_node = (_elementFactory(current_node._doc, c_node) # <<<<<<<<<<<<<<
- * if c_node is not NULL else None)
+ * self._next_node = _elementFactory(current_node._doc, c_node) # <<<<<<<<<<<<<<
* return current_node
+ *
*/
- __Pyx_GIVEREF(__pyx_t_1);
- __Pyx_GOTREF(__pyx_v_self->_next_node);
- __Pyx_DECREF(((PyObject *)__pyx_v_self->_next_node));
- __pyx_v_self->_next_node = ((struct LxmlElement *)__pyx_t_1);
- __pyx_t_1 = 0;
+ __pyx_t_1 = ((PyObject *)__pyx_v_current_node->_doc);
+ __Pyx_INCREF(__pyx_t_1);
+ __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_5);
+ __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+ __Pyx_GIVEREF(__pyx_t_5);
+ __Pyx_GOTREF(__pyx_v_self->_next_node);
+ __Pyx_DECREF(((PyObject *)__pyx_v_self->_next_node));
+ __pyx_v_self->_next_node = ((struct LxmlElement *)__pyx_t_5);
+ __pyx_t_5 = 0;
+ }
+ __pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2718
- * self._next_node = (_elementFactory(current_node._doc, c_node)
- * if c_node is not NULL else None)
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2720
+ * else:
+ * self._next_node = _elementFactory(current_node._doc, c_node)
* return current_node # <<<<<<<<<<<<<<
*
- * cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
+ * @cython.final
*/
__Pyx_XDECREF(__pyx_r);
__Pyx_INCREF(((PyObject *)__pyx_v_current_node));
__pyx_L1_error:;
__Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_5);
- __Pyx_XDECREF(__pyx_t_6);
__Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = NULL;
__pyx_L0:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2720
- * return current_node
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2723
*
+ * @cython.final
* cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node): # <<<<<<<<<<<<<<
* cdef int node_types = self._matcher._node_types
* if not node_types:
long __pyx_t_3;
__Pyx_RefNannySetupContext("_nextNodeAnyTag", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2721
- *
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2724
+ * @cython.final
* cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
* cdef int node_types = self._matcher._node_types # <<<<<<<<<<<<<<
* if not node_types:
__pyx_t_1 = __pyx_v_self->_matcher->_node_types;
__pyx_v_node_types = __pyx_t_1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2722
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2725
* cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
* cdef int node_types = self._matcher._node_types
* if not node_types: # <<<<<<<<<<<<<<
__pyx_t_2 = (!__pyx_v_node_types);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2723
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2726
* cdef int node_types = self._matcher._node_types
* if not node_types:
* return NULL # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2724
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2727
* if not node_types:
* return NULL
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0) # <<<<<<<<<<<<<<
*/
BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2725
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2728
* return NULL
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
* if node_types & (1 << c_node.type): # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_node_types & (1 << __pyx_v_c_node->type));
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2726
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2729
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
* if node_types & (1 << c_node.type):
* return c_node # <<<<<<<<<<<<<<
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2727
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2730
* if node_types & (1 << c_node.type):
* return c_node
* tree.END_FOR_EACH_ELEMENT_FROM(c_node) # <<<<<<<<<<<<<<
*/
END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2728
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2731
* return c_node
* tree.END_FOR_EACH_ELEMENT_FROM(c_node)
* return NULL # <<<<<<<<<<<<<<
*
- * cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
+ * @cython.final
*/
__pyx_r = NULL;
goto __pyx_L0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2730
- * return NULL
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2734
*
+ * @cython.final
* cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node): # <<<<<<<<<<<<<<
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
* if self._matcher.matches(c_node):
int __pyx_t_1;
__Pyx_RefNannySetupContext("_nextNodeMatchTag", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2731
- *
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2735
+ * @cython.final
* cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0) # <<<<<<<<<<<<<<
* if self._matcher.matches(c_node):
*/
BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2732
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2736
* cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
* if self._matcher.matches(c_node): # <<<<<<<<<<<<<<
__pyx_t_1 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(__pyx_v_self->_matcher, __pyx_v_c_node);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2733
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2737
* tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
* if self._matcher.matches(c_node):
* return c_node # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2734
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2738
* if self._matcher.matches(c_node):
* return c_node
* tree.END_FOR_EACH_ELEMENT_FROM(c_node) # <<<<<<<<<<<<<<
*/
END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2735
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2739
* return c_node
* tree.END_FOR_EACH_ELEMENT_FROM(c_node)
* return NULL # <<<<<<<<<<<<<<
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__tag,&__pyx_n_s__with_tail,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2749
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2753
* cdef object _nextEvent
* cdef _Element _start_element
* def __cinit__(self, _Element element not None, tag=None, *, with_tail=True): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.ElementTextIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self), __pyx_v_element, __pyx_v_tag, __pyx_v_with_tail);
goto __pyx_L0;
__pyx_L1_error:;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2750
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2754
* cdef _Element _start_element
* def __cinit__(self, _Element element not None, tag=None, *, with_tail=True):
* _assertValidNode(element) # <<<<<<<<<<<<<<
* if with_tail:
* events = (u"start", u"end")
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2750; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2751
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2755
* def __cinit__(self, _Element element not None, tag=None, *, with_tail=True):
* _assertValidNode(element)
* if with_tail: # <<<<<<<<<<<<<<
* events = (u"start", u"end")
* else:
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_with_tail); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2755; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2752
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2756
* _assertValidNode(element)
* if with_tail:
* events = (u"start", u"end") # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2754
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2758
* events = (u"start", u"end")
* else:
* events = (u"start",) # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2755
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2759
* else:
* events = (u"start",)
* self._start_element = element # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_start_element));
__pyx_v_self->_start_element = __pyx_v_element;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2756
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2760
* events = (u"start",)
* self._start_element = element
* self._nextEvent = iterwalk(element, events=events, tag=tag).__next__ # <<<<<<<<<<<<<<
*
* def __iter__(self):
*/
- __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(((PyObject *)__pyx_v_element));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_element));
__Pyx_GIVEREF(((PyObject *)__pyx_v_element));
- __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
- if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__events), ((PyObject *)__pyx_v_events)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__tag), __pyx_v_tag) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_iterwalk)), ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__events), ((PyObject *)__pyx_v_events)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__tag), __pyx_v_tag) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree_iterwalk)), ((PyObject *)__pyx_t_3), ((PyObject *)__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____next__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_t_5, __pyx_n_s____next__); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_GIVEREF(__pyx_t_4);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2758
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2762
* self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
*
* def __iter__(self): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__iter__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2759
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2763
*
* def __iter__(self):
* return self # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2761
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2765
* return self
*
* def __next__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__next__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2763
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2767
* def __next__(self):
* cdef _Element element
* result = None # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_v_result = Py_None;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2764
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2768
* cdef _Element element
* result = None
* while result is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_result == Py_None);
if (!__pyx_t_1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2765
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2769
* result = None
* while result is None:
* event, element = self._nextEvent() # raises StopIteration # <<<<<<<<<<<<<<
* if event == u"start":
* result = element.text
*/
- __pyx_t_2 = PyObject_Call(__pyx_v_self->_nextEvent, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_v_self->_nextEvent, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
PyObject* sequence = __pyx_t_2;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_4);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
#endif
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
__Pyx_GOTREF(__pyx_t_3);
index = 1; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_4);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_6 = NULL;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L6_unpacking_done:;
}
- if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2765; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_XDECREF(__pyx_v_event);
__pyx_v_event = __pyx_t_3;
__pyx_t_3 = 0;
__pyx_v_element = ((struct LxmlElement *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2766
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2770
* while result is None:
* event, element = self._nextEvent() # raises StopIteration
* if event == u"start": # <<<<<<<<<<<<<<
* result = element.text
* elif element is not self._start_element:
*/
- __pyx_t_2 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__start), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_RichCompare(__pyx_v_event, ((PyObject *)__pyx_n_u__start), Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2770; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2767
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2771
* event, element = self._nextEvent() # raises StopIteration
* if event == u"start":
* result = element.text # <<<<<<<<<<<<<<
* elif element is not self._start_element:
* result = element.tail
*/
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2767; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__text); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_result);
__pyx_v_result = __pyx_t_2;
goto __pyx_L7;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2768
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2772
* if event == u"start":
* result = element.text
* elif element is not self._start_element: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_element != __pyx_v_self->_start_element);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2769
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2773
* result = element.text
* elif element is not self._start_element:
* result = element.tail # <<<<<<<<<<<<<<
* return result
*
*/
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__tail); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_element), __pyx_n_s__tail); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_result);
__pyx_v_result = __pyx_t_2;
__pyx_L7:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2770
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2774
* elif element is not self._start_element:
* result = element.tail
* return result # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2772
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2776
* return result
*
* cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL: # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_createElement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2774
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2778
* cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocNode(c_doc, NULL, _xcstr(name_utf), NULL) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = xmlNewDocNode(__pyx_v_c_doc, NULL, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), NULL);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2775
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2779
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocNode(c_doc, NULL, _xcstr(name_utf), NULL)
* return c_node # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2777
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2781
* return c_node
*
* cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_createComment", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2779
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2783
* cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocComment(c_doc, text) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = xmlNewDocComment(__pyx_v_c_doc, __pyx_v_text);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2780
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2784
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocComment(c_doc, text)
* return c_node # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2782
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2786
* return c_node
*
* cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_createPI", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2784
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2788
* cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocPI(c_doc, target, text) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = xmlNewDocPI(__pyx_v_c_doc, __pyx_v_target, __pyx_v_text);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2785
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2789
* cdef xmlNode* c_node
* c_node = tree.xmlNewDocPI(c_doc, target, text)
* return c_node # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2787
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2791
* return c_node
*
* cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_createEntity", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2789
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2793
* cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):
* cdef xmlNode* c_node
* c_node = tree.xmlNewReference(c_doc, name) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = xmlNewReference(__pyx_v_c_doc, __pyx_v_name);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2790
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2794
* cdef xmlNode* c_node
* c_node = tree.xmlNewReference(c_doc, name)
* return c_node # <<<<<<<<<<<<<<
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2794
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2798
* # module-level API for ElementTree
*
* def Element(_tag, attrib=None, nsmap=None, **_extra): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "Element") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "Element") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
__Pyx_AddTraceback("lxml.etree.Element", __pyx_clineno, __pyx_lineno, __pyx_filename);
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("Element", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2804
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2808
* create an Element within a specific document or parser context.
* """
* return _makeElement(_tag, NULL, None, None, None, None, # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2805
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2809
* """
* return _makeElement(_tag, NULL, None, None, None, None,
* attrib, nsmap, _extra) # <<<<<<<<<<<<<<
*
* def Comment(text=None):
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject *)__pyx_v__extra))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeElement(__pyx_v__tag, NULL, ((struct LxmlDocument *)Py_None), ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None), Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject *)__pyx_v__extra))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,0};
PyObject* values[1] = {0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2807
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2811
* attrib, nsmap, _extra)
*
* def Comment(text=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Comment") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("Comment", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("Comment", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.Comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_RefNannySetupContext("Comment", 0);
__Pyx_INCREF(__pyx_v_text);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2816
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2820
* cdef xmlNode* c_node
* cdef xmlDoc* c_doc
* if text is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_text == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2817
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2821
* cdef xmlDoc* c_doc
* if text is None:
* text = b'' # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2819
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2823
* text = b''
* else:
* text = _utf8(text) # <<<<<<<<<<<<<<
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_text)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_text)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_v_text);
__pyx_v_text = __pyx_t_2;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2820
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2824
* else:
* text = _utf8(text)
* c_doc = _newXMLDoc() # <<<<<<<<<<<<<<
* doc = _documentFactory(c_doc, None)
* c_node = _createComment(c_doc, _xcstr(text))
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_doc = __pyx_t_3;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2821
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2825
* text = _utf8(text)
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None) # <<<<<<<<<<<<<<
* c_node = _createComment(c_doc, _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2825; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2822
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2826
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
* c_node = _createComment(c_doc, _xcstr(text)) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = __pyx_f_4lxml_5etree__createComment(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2823
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2827
* doc = _documentFactory(c_doc, None)
* c_node = _createComment(c_doc, _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node) # <<<<<<<<<<<<<<
*/
xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2824
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2828
* c_node = _createComment(c_doc, _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
* return _elementFactory(doc, c_node) # <<<<<<<<<<<<<<
* def ProcessingInstruction(target, text=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__target,&__pyx_n_s__text,0};
PyObject* values[2] = {0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2826
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2830
* return _elementFactory(doc, c_node)
*
* def ProcessingInstruction(target, text=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ProcessingInstruction") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ProcessingInstruction") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("ProcessingInstruction", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("ProcessingInstruction", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.ProcessingInstruction", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_target);
__Pyx_INCREF(__pyx_v_text);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2835
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2839
* cdef xmlNode* c_node
* cdef xmlDoc* c_doc
* target = _utf8(target) # <<<<<<<<<<<<<<
* if text is None:
* text = b''
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_target)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_target)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_v_target);
__pyx_v_target = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2836
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2840
* cdef xmlDoc* c_doc
* target = _utf8(target)
* if text is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_text == Py_None);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2837
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2841
* target = _utf8(target)
* if text is None:
* text = b'' # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2839
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2843
* text = b''
* else:
* text = _utf8(text) # <<<<<<<<<<<<<<
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_text)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_text)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_v_text);
__pyx_v_text = __pyx_t_1;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2840
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2844
* else:
* text = _utf8(text)
* c_doc = _newXMLDoc() # <<<<<<<<<<<<<<
* doc = _documentFactory(c_doc, None)
* c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2840; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_doc = __pyx_t_3;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2841
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2845
* text = _utf8(text)
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None) # <<<<<<<<<<<<<<
* c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2842
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2846
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
* c_node = _createPI(c_doc, _xcstr(target), _xcstr(text)) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = __pyx_f_4lxml_5etree__createPI(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_target), (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2843
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2847
* doc = _documentFactory(c_doc, None)
* c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node) # <<<<<<<<<<<<<<
*/
xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2844
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2848
* c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
* return _elementFactory(doc, c_node) # <<<<<<<<<<<<<<
* PI = ProcessingInstruction
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
else goto __pyx_L5_argtuple_error;
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2859; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2863; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.CDATA.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2859
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2863
* """
* cdef bytes _utf8_data
* def __cinit__(self, data): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2860
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2864
* cdef bytes _utf8_data
* def __cinit__(self, data):
* self._utf8_data = _utf8(data) # <<<<<<<<<<<<<<
*
* def Entity(name):
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_data)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2860; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_data)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_utf8_data);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2862
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2866
* self._utf8_data = _utf8(data)
*
* def Entity(name): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("Entity", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2874
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2878
* cdef xmlNode* c_node
* cdef xmlDoc* c_doc
* name_utf = _utf8(name) # <<<<<<<<<<<<<<
* c_name = _xcstr(name_utf)
* if c_name[0] == c'#':
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_name_utf = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2875
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2879
* cdef xmlDoc* c_doc
* name_utf = _utf8(name)
* c_name = _xcstr(name_utf) # <<<<<<<<<<<<<<
*/
__pyx_v_c_name = (const xmlChar*)PyBytes_AS_STRING(((PyObject *)__pyx_v_name_utf));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2876
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2880
* name_utf = _utf8(name)
* c_name = _xcstr(name_utf)
* if c_name[0] == c'#': # <<<<<<<<<<<<<<
__pyx_t_2 = ((__pyx_v_c_name[0]) == '#');
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2877
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2881
* c_name = _xcstr(name_utf)
* if c_name[0] == c'#':
* if not _characterReferenceIsValid(c_name + 1): # <<<<<<<<<<<<<<
__pyx_t_2 = (!__pyx_f_4lxml_5etree__characterReferenceIsValid((__pyx_v_c_name + 1)));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2878
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2882
* if c_name[0] == c'#':
* if not _characterReferenceIsValid(c_name + 1):
* raise ValueError, u"Invalid character reference: '%s'" % name # <<<<<<<<<<<<<<
* elif not _xmlNameIsValid(c_name):
* raise ValueError, u"Invalid entity reference: '%s'" % name
*/
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_116), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_116), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_1), 0, 0);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2879
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2883
* if not _characterReferenceIsValid(c_name + 1):
* raise ValueError, u"Invalid character reference: '%s'" % name
* elif not _xmlNameIsValid(c_name): # <<<<<<<<<<<<<<
__pyx_t_2 = (!__pyx_f_4lxml_5etree__xmlNameIsValid(__pyx_v_c_name));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2880
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2884
* raise ValueError, u"Invalid character reference: '%s'" % name
* elif not _xmlNameIsValid(c_name):
* raise ValueError, u"Invalid entity reference: '%s'" % name # <<<<<<<<<<<<<<
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
*/
- __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_117), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_117), __pyx_v_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_1), 0, 0);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2880; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2881
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2885
* elif not _xmlNameIsValid(c_name):
* raise ValueError, u"Invalid entity reference: '%s'" % name
* c_doc = _newXMLDoc() # <<<<<<<<<<<<<<
* doc = _documentFactory(c_doc, None)
* c_node = _createEntity(c_doc, c_name)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_doc = __pyx_t_3;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2882
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2886
* raise ValueError, u"Invalid entity reference: '%s'" % name
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None) # <<<<<<<<<<<<<<
* c_node = _createEntity(c_doc, c_name)
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2882; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, ((struct __pyx_obj_4lxml_5etree__BaseParser *)Py_None))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2883
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2887
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, None)
* c_node = _createEntity(c_doc, c_name) # <<<<<<<<<<<<<<
*/
__pyx_v_c_node = __pyx_f_4lxml_5etree__createEntity(__pyx_v_c_doc, __pyx_v_c_name);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2884
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2888
* doc = _documentFactory(c_doc, None)
* c_node = _createEntity(c_doc, c_name)
* tree.xmlAddChild(<xmlNode*>c_doc, c_node) # <<<<<<<<<<<<<<
*/
xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2885
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2889
* c_node = _createEntity(c_doc, c_name)
* tree.xmlAddChild(<xmlNode*>c_doc, c_node)
* return _elementFactory(doc, c_node) # <<<<<<<<<<<<<<
* def SubElement(_Element _parent not None, _tag,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2889; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s___parent,&__pyx_n_s___tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
PyObject* values[4] = {0,0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2888
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2892
*
* def SubElement(_Element _parent not None, _tag,
* attrib=None, nsmap=None, **_extra): # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s___tag)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (kw_args > 0) {
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "SubElement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "SubElement") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
__Pyx_AddTraceback("lxml.etree.SubElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__parent), __pyx_ptype_4lxml_5etree__Element, 0, "_parent", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__parent), __pyx_ptype_4lxml_5etree__Element, 0, "_parent", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_14SubElement(__pyx_self, __pyx_v__parent, __pyx_v__tag, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra);
goto __pyx_L0;
__pyx_L1_error:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2887
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2891
* return _elementFactory(doc, c_node)
*
* def SubElement(_Element _parent not None, _tag, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("SubElement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2894
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2898
* appends it to an existing element.
* """
* return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra) # <<<<<<<<<<<<<<
* def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v__parent, __pyx_v__tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject *)__pyx_v__extra))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2894; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__makeSubElement(__pyx_v__parent, __pyx_v__tag, Py_None, Py_None, __pyx_v_attrib, __pyx_v_nsmap, ((PyObject *)__pyx_v__extra))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element,&__pyx_n_s__file,&__pyx_n_s__parser,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2896
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2900
* return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)
*
* def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ElementTree") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ElementTree") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("ElementTree", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("ElementTree", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.ElementTree", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_16ElementTree(__pyx_self, __pyx_v_element, __pyx_v_file, __pyx_v_parser);
goto __pyx_L0;
__pyx_L1_error:;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("ElementTree", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2908
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2912
* cdef _Document doc
*
* if element is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_element) != Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2909
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2913
*
* if element is not None:
* doc = element._doc # <<<<<<<<<<<<<<
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2910
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2914
* if element is not None:
* doc = element._doc
* elif file is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_file != Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2911
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2915
* doc = element._doc
* elif file is not None:
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_5);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2912
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2916
* elif file is not None:
* try:
* doc = _parseDocument(file, parser, None) # <<<<<<<<<<<<<<
* except _TargetParserResult, result_container:
* return result_container.result
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, __pyx_v_parser, Py_None)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2912; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_file, __pyx_v_parser, Py_None)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2916; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
__pyx_t_2 = 0;
__pyx_L4_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2913
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2917
* try:
* doc = _parseDocument(file, parser, None)
* except _TargetParserResult, result_container: # <<<<<<<<<<<<<<
* return result_container.result
* else:
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2917; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_6 = PyErr_ExceptionMatches(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_6) {
__Pyx_AddTraceback("lxml.etree.ElementTree", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2913; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2917; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_7);
__pyx_v_result_container = __pyx_t_7;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2914
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2918
* doc = _parseDocument(file, parser, None)
* except _TargetParserResult, result_container:
* return result_container.result # <<<<<<<<<<<<<<
* c_doc = _newXMLDoc()
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_9 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2914; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
+ __pyx_t_9 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2918; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
__Pyx_GOTREF(__pyx_t_9);
__pyx_r = __pyx_t_9;
__pyx_t_9 = 0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2916
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2920
* return result_container.result
* else:
* c_doc = _newXMLDoc() # <<<<<<<<<<<<<<
* doc = _documentFactory(c_doc, parser)
*
*/
- __pyx_t_10 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2916; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2920; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_doc = __pyx_t_10;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2917
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2921
* else:
* c_doc = _newXMLDoc()
* doc = _documentFactory(c_doc, parser) # <<<<<<<<<<<<<<
*
* return _elementTreeFactory(doc, element)
*/
- __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_8);
__pyx_t_8 = 0;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2919
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2923
* doc = _documentFactory(c_doc, parser)
*
* return _elementTreeFactory(doc, element) # <<<<<<<<<<<<<<
* def HTML(text, _BaseParser parser=None, *, base_url=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, __pyx_v_element)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, __pyx_v_element)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2921
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2925
* return _elementTreeFactory(doc, element)
*
* def HTML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "HTML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "HTML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("HTML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("HTML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.HTML", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_18HTML(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_RefNannySetupContext("HTML", 0);
__Pyx_INCREF((PyObject *)__pyx_v_parser);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2936
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2940
* """
* cdef _Document doc
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2937
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2941
* cdef _Document doc
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() # <<<<<<<<<<<<<<
* if not isinstance(parser, HTMLParser):
* parser = __DEFAULT_HTML_PARSER
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_v_parser));
__pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2938
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2942
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* if not isinstance(parser, HTMLParser): # <<<<<<<<<<<<<<
__pyx_t_3 = (!__pyx_t_1);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2939
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2943
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* if not isinstance(parser, HTMLParser):
* parser = __DEFAULT_HTML_PARSER # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2940
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2944
* if not isinstance(parser, HTMLParser):
* parser = __DEFAULT_HTML_PARSER
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_6);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2941
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2945
* parser = __DEFAULT_HTML_PARSER
* try:
* doc = _parseMemoryDocument(text, base_url, parser) # <<<<<<<<<<<<<<
* return doc.getroot()
* except _TargetParserResult, result_container:
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2941; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2945; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2942
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2946
* try:
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot() # <<<<<<<<<<<<<<
* return result_container.result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2942; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2943
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2947
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot()
* except _TargetParserResult, result_container: # <<<<<<<<<<<<<<
* return result_container.result
*
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2947; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = PyErr_ExceptionMatches(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree.HTML", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2943; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2947; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
__pyx_v_result_container = __pyx_t_8;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2944
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2948
* return doc.getroot()
* except _TargetParserResult, result_container:
* return result_container.result # <<<<<<<<<<<<<<
* def XML(text, _BaseParser parser=None, *, base_url=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_10 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2944; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ __pyx_t_10 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2948; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_10);
__pyx_r = __pyx_t_10;
__pyx_t_10 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2946
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2950
* return result_container.result
*
* def XML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_20XML(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_RefNannySetupContext("XML", 0);
__Pyx_INCREF((PyObject *)__pyx_v_parser);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2964
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2968
* """
* cdef _Document doc
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2965
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2969
* cdef _Document doc
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() # <<<<<<<<<<<<<<
* if not isinstance(parser, XMLParser):
* parser = __DEFAULT_XML_PARSER
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_v_parser));
__pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2966
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2970
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* if not isinstance(parser, XMLParser): # <<<<<<<<<<<<<<
__pyx_t_3 = (!__pyx_t_1);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2967
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2971
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* if not isinstance(parser, XMLParser):
* parser = __DEFAULT_XML_PARSER # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2968
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2972
* if not isinstance(parser, XMLParser):
* parser = __DEFAULT_XML_PARSER
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_6);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2969
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2973
* parser = __DEFAULT_XML_PARSER
* try:
* doc = _parseMemoryDocument(text, base_url, parser) # <<<<<<<<<<<<<<
* return doc.getroot()
* except _TargetParserResult, result_container:
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2969; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2973; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2970
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2974
* try:
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot() # <<<<<<<<<<<<<<
* return result_container.result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2970; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__pyx_L5_error:;
__Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2971
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2975
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot()
* except _TargetParserResult, result_container: # <<<<<<<<<<<<<<
* return result_container.result
*
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2971; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_7 = PyErr_ExceptionMatches(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_7) {
__Pyx_AddTraceback("lxml.etree.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2971; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_8, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2975; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
__pyx_v_result_container = __pyx_t_8;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2972
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2976
* return doc.getroot()
* except _TargetParserResult, result_container:
* return result_container.result # <<<<<<<<<<<<<<
* def fromstring(text, _BaseParser parser=None, *, base_url=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_10 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2972; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
+ __pyx_t_10 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2976; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
__Pyx_GOTREF(__pyx_t_10);
__pyx_r = __pyx_t_10;
__pyx_t_10 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__text,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2974
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2978
* return result_container.result
*
* def fromstring(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_22fromstring(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
goto __pyx_L0;
__pyx_L1_error:;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("fromstring", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2988
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2992
* """
* cdef _Document doc
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2989
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2993
* cdef _Document doc
* try:
* doc = _parseMemoryDocument(text, base_url, parser) # <<<<<<<<<<<<<<
* return doc.getroot()
* except _TargetParserResult, result_container:
*/
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2989; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseMemoryDocument(__pyx_v_text, __pyx_v_base_url, __pyx_v_parser)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2993; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2990
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2994
* try:
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot() # <<<<<<<<<<<<<<
* return result_container.result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2990; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2991
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2995
* doc = _parseMemoryDocument(text, base_url, parser)
* return doc.getroot()
* except _TargetParserResult, result_container: # <<<<<<<<<<<<<<
* return result_container.result
*
*/
- __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2991; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2995; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyErr_ExceptionMatches(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_5) {
__Pyx_AddTraceback("lxml.etree.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2991; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2995; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__pyx_v_result_container = __pyx_t_6;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2992
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2996
* return doc.getroot()
* except _TargetParserResult, result_container:
* return result_container.result # <<<<<<<<<<<<<<
* def fromstringlist(strings, _BaseParser parser=None):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2992; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ __pyx_t_8 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2996; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__strings,&__pyx_n_s__parser,0};
PyObject* values[2] = {0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2994
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2998
* return result_container.result
*
* def fromstringlist(strings, _BaseParser parser=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("fromstringlist", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("fromstringlist", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.fromstringlist", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_24fromstringlist(__pyx_self, __pyx_v_strings, __pyx_v_parser);
goto __pyx_L0;
__pyx_L1_error:;
__Pyx_RefNannySetupContext("fromstringlist", 0);
__Pyx_INCREF((PyObject *)__pyx_v_parser);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3004
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3008
* """
* cdef _Document doc
* if parser is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_parser) == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3005
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3009
* cdef _Document doc
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser() # <<<<<<<<<<<<<<
* feed = parser.feed
* for data in strings:
*/
- __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3005; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_24_ParserDictionaryContext_getDefaultParser(__pyx_v_4lxml_5etree___GLOBAL_PARSER_CONTEXT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_v_parser));
__pyx_v_parser = ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_2);
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3006
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3010
* if parser is None:
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* feed = parser.feed # <<<<<<<<<<<<<<
* for data in strings:
* feed(data)
*/
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__feed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3006; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__feed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3010; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_feed = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3007
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3011
* parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
* feed = parser.feed
* for data in strings: # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_strings; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
__pyx_t_4 = NULL;
} else {
- __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_strings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_strings); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext;
}
if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_2)) {
if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_2)) {
if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_5 = __pyx_t_4(__pyx_t_2);
if (unlikely(!__pyx_t_5)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3007; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
__pyx_v_data = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3008
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3012
* feed = parser.feed
* for data in strings:
* feed(data) # <<<<<<<<<<<<<<
* return parser.close()
*
*/
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_data);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_data);
__Pyx_GIVEREF(__pyx_v_data);
- __pyx_t_6 = PyObject_Call(__pyx_v_feed, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_Call(__pyx_v_feed, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3012; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3009
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3013
* for data in strings:
* feed(data)
* return parser.close() # <<<<<<<<<<<<<<
* def iselement(element):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__close); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_parser), __pyx_n_s__close); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_6;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3011
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3015
* return parser.close()
*
* def iselement(element): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("iselement", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3016
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3020
* Checks if an object appears to be a valid element object.
* """
* return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL # <<<<<<<<<<<<<<
} else {
__pyx_t_3 = __pyx_t_1;
}
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dump") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dump") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_elem = ((struct LxmlElement *)values[0]);
if (values[1]) {
- __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3018
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3022
* return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL
*
* def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True): # <<<<<<<<<<<<<<
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("dump", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("dump", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_elem), __pyx_ptype_4lxml_5etree__Element, 0, "elem", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_elem), __pyx_ptype_4lxml_5etree__Element, 0, "elem", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_28dump(__pyx_self, __pyx_v_elem, __pyx_v_pretty_print, __pyx_v_with_tail);
goto __pyx_L0;
__pyx_L1_error:;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("dump", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3024
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3028
* should be used for debugging only.
* """
* xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail, # <<<<<<<<<<<<<<
* encoding=u'unicode' if python.IS_PYTHON3 else None)
* if not pretty_print:
*/
- __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(((PyObject *)__pyx_v_elem));
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_elem));
__Pyx_GIVEREF(((PyObject *)__pyx_v_elem));
- __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_pretty_print); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_pretty_print); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__pretty_print), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__pretty_print), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__with_tail), __pyx_v_with_tail) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__with_tail), __pyx_v_with_tail) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3025
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3029
* """
* xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,
* encoding=u'unicode' if python.IS_PYTHON3 else None) # <<<<<<<<<<<<<<
__Pyx_INCREF(Py_None);
__pyx_t_4 = Py_None;
}
- if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__encoding), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_3, ((PyObject *)__pyx_n_s__encoding), __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__pyx_v_xml = __pyx_t_4;
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3026
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3030
* xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,
* encoding=u'unicode' if python.IS_PYTHON3 else None)
* if not pretty_print: # <<<<<<<<<<<<<<
__pyx_t_5 = (!__pyx_v_pretty_print);
if (__pyx_t_5) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3027
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3031
* encoding=u'unicode' if python.IS_PYTHON3 else None)
* if not pretty_print:
* xml += '\n' # <<<<<<<<<<<<<<
* sys.stdout.write(xml)
*
*/
- __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, ((PyObject *)__pyx_kp_s_46)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, ((PyObject *)__pyx_kp_s_46)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_v_xml);
__pyx_v_xml = __pyx_t_4;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3028
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3032
* if not pretty_print:
* xml += '\n'
* sys.stdout.write(xml) # <<<<<<<<<<<<<<
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml",
*/
- __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s__stdout); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_GetAttr(__pyx_v_4lxml_5etree_sys, __pyx_n_s__stdout); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__write); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetAttr(__pyx_t_4, __pyx_n_s__write); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_INCREF(__pyx_v_xml);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_xml);
__Pyx_GIVEREF(__pyx_v_xml);
- __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__element_or_tree,&__pyx_n_s__encoding,&__pyx_n_s__method,&__pyx_n_s__xml_declaration,&__pyx_n_s__pretty_print,&__pyx_n_s__with_tail,&__pyx_n_s__standalone,&__pyx_n_s__doctype,&__pyx_n_s__exclusive,&__pyx_n_s__with_comments,&__pyx_n_s_89,0};
PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3030
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3034
* sys.stdout.write(xml)
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml", # <<<<<<<<<<<<<<
values[1] = ((PyObject *)Py_None);
values[2] = ((PyObject *)__pyx_n_u__xml);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3031
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3035
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml",
* xml_declaration=None, bint pretty_print=False, bint with_tail=True, # <<<<<<<<<<<<<<
*/
values[3] = ((PyObject *)Py_None);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3032
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3036
* def tostring(element_or_tree, *, encoding=None, method=u"xml",
* xml_declaration=None, bint pretty_print=False, bint with_tail=True,
* standalone=None, doctype=None, # <<<<<<<<<<<<<<
values[6] = ((PyObject *)Py_None);
values[7] = ((PyObject *)Py_None);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3033
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3037
* xml_declaration=None, bint pretty_print=False, bint with_tail=True,
* standalone=None, doctype=None,
* bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tostring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tostring") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
__pyx_v_method = values[2];
__pyx_v_xml_declaration = values[3];
if (values[4]) {
- __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3035; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3031
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3035
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml",
* xml_declaration=None, bint pretty_print=False, bint with_tail=True, # <<<<<<<<<<<<<<
__pyx_v_pretty_print = ((int)0);
}
if (values[5]) {
- __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3031; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3035; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_with_tail = ((int)1);
}
__pyx_v_standalone = values[6];
__pyx_v_doctype = values[7];
if (values[8]) {
- __pyx_v_exclusive = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_exclusive == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3033; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_exclusive = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_exclusive == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3037; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3033
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3037
* xml_declaration=None, bint pretty_print=False, bint with_tail=True,
* standalone=None, doctype=None,
* bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None): # <<<<<<<<<<<<<<
__pyx_v_exclusive = ((int)0);
}
if (values[9]) {
- __pyx_v_with_comments = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_with_comments == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3033; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_with_comments = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_with_comments == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3037; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_with_comments = ((int)1);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("tostring", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("tostring", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.tostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3030
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3034
* sys.stdout.write(xml)
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml", # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("tostring", 0);
__Pyx_INCREF(__pyx_v_encoding);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3079
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3083
* cdef int is_standalone
* # C14N serialisation
* if method == 'c14n': # <<<<<<<<<<<<<<
* if encoding is not None:
* raise ValueError("Cannot specify encoding with C14N")
*/
- __pyx_t_1 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_s__c14n), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_s__c14n), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3080
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3084
* # C14N serialisation
* if method == 'c14n':
* if encoding is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_encoding != Py_None);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3081
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3085
* if method == 'c14n':
* if encoding is not None:
* raise ValueError("Cannot specify encoding with C14N") # <<<<<<<<<<<<<<
* if xml_declaration:
* raise ValueError("Cannot enable XML declaration in C14N")
*/
- __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_119), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_119), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3082
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3086
* if encoding is not None:
* raise ValueError("Cannot specify encoding with C14N")
* if xml_declaration: # <<<<<<<<<<<<<<
* raise ValueError("Cannot enable XML declaration in C14N")
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3082; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3083
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3087
* raise ValueError("Cannot specify encoding with C14N")
* if xml_declaration:
* raise ValueError("Cannot enable XML declaration in C14N") # <<<<<<<<<<<<<<
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
* if not with_comments:
*/
- __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_120), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_120), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3084
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3088
* if xml_declaration:
* raise ValueError("Cannot enable XML declaration in C14N")
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes) # <<<<<<<<<<<<<<
* raise ValueError("Can only discard comments in C14N serialisation")
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__tostringC14N(__pyx_v_element_or_tree, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_inclusive_ns_prefixes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3084; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__tostringC14N(__pyx_v_element_or_tree, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_inclusive_ns_prefixes)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3085
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3089
* raise ValueError("Cannot enable XML declaration in C14N")
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
* if not with_comments: # <<<<<<<<<<<<<<
__pyx_t_2 = (!__pyx_v_with_comments);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3086
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3090
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
* if not with_comments:
* raise ValueError("Can only discard comments in C14N serialisation") # <<<<<<<<<<<<<<
* if encoding is _unicode or (encoding is not None and encoding.upper() == 'UNICODE'):
* if xml_declaration:
*/
- __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_121), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_k_tuple_121), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L6;
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3087
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3091
* if not with_comments:
* raise ValueError("Can only discard comments in C14N serialisation")
* if encoding is _unicode or (encoding is not None and encoding.upper() == 'UNICODE'): # <<<<<<<<<<<<<<
if (!__pyx_t_2) {
__pyx_t_3 = (__pyx_v_encoding != Py_None);
if (__pyx_t_3) {
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_s__UNICODE), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_s__UNICODE), Py_EQ); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3091; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = __pyx_t_5;
} else {
}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3088
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3092
* raise ValueError("Can only discard comments in C14N serialisation")
* if encoding is _unicode or (encoding is not None and encoding.upper() == 'UNICODE'):
* if xml_declaration: # <<<<<<<<<<<<<<
* raise ValueError, \
* u"Serialisation to unicode must not request an XML declaration"
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3088; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3092; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3089
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3093
* if encoding is _unicode or (encoding is not None and encoding.upper() == 'UNICODE'):
* if xml_declaration:
* raise ValueError, \ # <<<<<<<<<<<<<<
* write_declaration = 0
*/
__Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_kp_u_122), 0, 0);
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3089; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3093; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L8;
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3091
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3095
* raise ValueError, \
* u"Serialisation to unicode must not request an XML declaration"
* write_declaration = 0 # <<<<<<<<<<<<<<
*/
__pyx_v_write_declaration = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3092
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3096
* u"Serialisation to unicode must not request an XML declaration"
* write_declaration = 0
* encoding = _unicode # <<<<<<<<<<<<<<
goto __pyx_L7;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3093
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3097
* write_declaration = 0
* encoding = _unicode
* elif xml_declaration is None: # <<<<<<<<<<<<<<
__pyx_t_3 = (__pyx_v_xml_declaration == Py_None);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3095
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3099
* elif xml_declaration is None:
* # by default, write an XML declaration only for non-standard encodings
* write_declaration = encoding is not None and encoding.upper() not in \ # <<<<<<<<<<<<<<
*/
__pyx_t_3 = (__pyx_v_encoding != Py_None);
if (__pyx_t_3) {
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_encoding, __pyx_n_s__upper); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_u__ASCII), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_u__ASCII), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (((int)__pyx_t_2)) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_kp_u_101), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_kp_u_101), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_5 = ((int)__pyx_t_6);
} else {
__pyx_t_5 = ((int)__pyx_t_2);
}
if (__pyx_t_5) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_u__UTF8), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_n_u__UTF8), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_6 = ((int)__pyx_t_2);
} else {
__pyx_t_6 = __pyx_t_5;
}
if (__pyx_t_6) {
- __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_kp_u_100), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3095; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, ((PyObject *)__pyx_kp_u_100), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3099; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_2 = ((int)__pyx_t_5);
} else {
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3098
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3102
* (u'ASCII', u'UTF-8', u'UTF8', u'US-ASCII')
* else:
* write_declaration = xml_declaration # <<<<<<<<<<<<<<
* if encoding is None:
* encoding = u'ASCII'
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3098; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_write_declaration = __pyx_t_2;
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3099
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3103
* else:
* write_declaration = xml_declaration
* if encoding is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_encoding == Py_None);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3100
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3104
* write_declaration = xml_declaration
* if encoding is None:
* encoding = u'ASCII' # <<<<<<<<<<<<<<
}
__pyx_L9:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3101
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3105
* if encoding is None:
* encoding = u'ASCII'
* if standalone is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_standalone == Py_None);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3102
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3106
* encoding = u'ASCII'
* if standalone is None:
* is_standalone = -1 # <<<<<<<<<<<<<<
goto __pyx_L10;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3103
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3107
* if standalone is None:
* is_standalone = -1
* elif standalone: # <<<<<<<<<<<<<<
* write_declaration = 1
* is_standalone = 1
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3103; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3104
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3108
* is_standalone = -1
* elif standalone:
* write_declaration = 1 # <<<<<<<<<<<<<<
*/
__pyx_v_write_declaration = 1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3105
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3109
* elif standalone:
* write_declaration = 1
* is_standalone = 1 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3107
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3111
* is_standalone = 1
* else:
* write_declaration = 1 # <<<<<<<<<<<<<<
*/
__pyx_v_write_declaration = 1;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3108
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3112
* else:
* write_declaration = 1
* is_standalone = 0 # <<<<<<<<<<<<<<
}
__pyx_L10:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3110
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3114
* is_standalone = 0
*
* if isinstance(element_or_tree, _Element): # <<<<<<<<<<<<<<
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element_or_tree, ((PyObject*)__pyx_ptype_4lxml_5etree__Element));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3111
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3115
*
* if isinstance(element_or_tree, _Element):
* return _tostring(<_Element>element_or_tree, encoding, doctype, method, # <<<<<<<<<<<<<<
*/
__Pyx_XDECREF(__pyx_r);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3113
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3117
* return _tostring(<_Element>element_or_tree, encoding, doctype, method,
* write_declaration, 0, pretty_print, with_tail,
* is_standalone) # <<<<<<<<<<<<<<
* elif isinstance(element_or_tree, _ElementTree):
* return _tostring((<_ElementTree>element_or_tree)._context_node,
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 0, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 0, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
goto __pyx_L11;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3114
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3118
* write_declaration, 0, pretty_print, with_tail,
* is_standalone)
* elif isinstance(element_or_tree, _ElementTree): # <<<<<<<<<<<<<<
__pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element_or_tree, ((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3115
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3119
* is_standalone)
* elif isinstance(element_or_tree, _ElementTree):
* return _tostring((<_ElementTree>element_or_tree)._context_node, # <<<<<<<<<<<<<<
__pyx_t_4 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
__Pyx_INCREF(__pyx_t_4);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3117
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3121
* return _tostring((<_ElementTree>element_or_tree)._context_node,
* encoding, doctype, method, write_declaration, 1,
* pretty_print, with_tail, is_standalone) # <<<<<<<<<<<<<<
* else:
* raise TypeError, u"Type '%s' cannot be serialized." % \
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_4), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_4), __pyx_v_encoding, __pyx_v_doctype, __pyx_v_method, __pyx_v_write_declaration, 1, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_is_standalone); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = __pyx_t_1;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3120
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3124
* else:
* raise TypeError, u"Type '%s' cannot be serialized." % \
* python._fqtypename(element_or_tree) # <<<<<<<<<<<<<<
*
* def tostringlist(element_or_tree, *args, **kwargs):
*/
- __pyx_t_1 = PyBytes_FromString(_fqtypename(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyBytes_FromString(_fqtypename(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_123), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_123), ((PyObject *)__pyx_t_1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), 0, 0);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L11:;
}
if (unlikely(kw_args > 0)) {
const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "tostringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "tostringlist") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("tostringlist", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("tostringlist", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
__Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3122
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3126
* python._fqtypename(element_or_tree)
*
* def tostringlist(element_or_tree, *args, **kwargs): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("tostringlist", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3131
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3135
* single string wrapped in a list.
* """
* return [tostring(element_or_tree, *args, **kwargs)] # <<<<<<<<<<<<<<
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_GetName(__pyx_m, __pyx_n_s__tostring); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(__pyx_v_element_or_tree);
PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_element_or_tree);
__Pyx_GIVEREF(__pyx_v_element_or_tree);
- __pyx_t_3 = PySequence_Tuple(((PyObject *)__pyx_v_args)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_Tuple(((PyObject *)__pyx_v_args)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Add(((PyObject *)__pyx_t_2), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__pyx_t_3 = ((PyObject *)__pyx_v_kwargs);
__Pyx_INCREF(__pyx_t_3);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_4), ((PyObject *)__pyx_t_3)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
PyObject* values[5] = {0,0,0,0,0};
values[1] = ((PyObject *)__pyx_n_u__xml);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3134
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3138
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
* bint with_tail=True, doctype=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tounicode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tounicode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
goto __pyx_L5_argtuple_error;
__pyx_v_element_or_tree = values[0];
__pyx_v_method = values[1];
if (values[2]) {
- __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3133
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3137
* return [tostring(element_or_tree, *args, **kwargs)]
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False, # <<<<<<<<<<<<<<
__pyx_v_pretty_print = ((int)0);
}
if (values[3]) {
- __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3138; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3134
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3138
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
* bint with_tail=True, doctype=None): # <<<<<<<<<<<<<<
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("tounicode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("tounicode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.tounicode", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3133
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3137
* return [tostring(element_or_tree, *args, **kwargs)]
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("tounicode", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3156
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3160
* on the tail text of children, which will always be serialised.
* """
* if isinstance(element_or_tree, _Element): # <<<<<<<<<<<<<<
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element_or_tree, ((PyObject*)__pyx_ptype_4lxml_5etree__Element));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3157
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3161
* """
* if isinstance(element_or_tree, _Element):
* return _tostring(<_Element>element_or_tree, _unicode, doctype, method, # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_4lxml_5etree__unicode;
__Pyx_INCREF(__pyx_t_2);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3158
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3162
* if isinstance(element_or_tree, _Element):
* return _tostring(<_Element>element_or_tree, _unicode, doctype, method,
* 0, 0, pretty_print, with_tail, -1) # <<<<<<<<<<<<<<
* elif isinstance(element_or_tree, _ElementTree):
* return _tostring((<_ElementTree>element_or_tree)._context_node,
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_t_2, __pyx_v_doctype, __pyx_v_method, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_v_element_or_tree), __pyx_t_2, __pyx_v_doctype, __pyx_v_method, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_r = __pyx_t_3;
goto __pyx_L3;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3159
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3163
* return _tostring(<_Element>element_or_tree, _unicode, doctype, method,
* 0, 0, pretty_print, with_tail, -1)
* elif isinstance(element_or_tree, _ElementTree): # <<<<<<<<<<<<<<
__pyx_t_1 = __Pyx_TypeCheck(__pyx_v_element_or_tree, ((PyObject*)__pyx_ptype_4lxml_5etree__ElementTree));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3160
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3164
* 0, 0, pretty_print, with_tail, -1)
* elif isinstance(element_or_tree, _ElementTree):
* return _tostring((<_ElementTree>element_or_tree)._context_node, # <<<<<<<<<<<<<<
__pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
__Pyx_INCREF(__pyx_t_3);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3161
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3165
* elif isinstance(element_or_tree, _ElementTree):
* return _tostring((<_ElementTree>element_or_tree)._context_node,
* _unicode, doctype, method, 0, 1, pretty_print, # <<<<<<<<<<<<<<
__pyx_t_2 = __pyx_v_4lxml_5etree__unicode;
__Pyx_INCREF(__pyx_t_2);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3162
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3166
* return _tostring((<_ElementTree>element_or_tree)._context_node,
* _unicode, doctype, method, 0, 1, pretty_print,
* with_tail, -1) # <<<<<<<<<<<<<<
* else:
* raise TypeError, u"Type '%s' cannot be serialized." % \
*/
- __pyx_t_4 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_3), __pyx_t_2, __pyx_v_doctype, __pyx_v_method, 0, 1, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __pyx_f_4lxml_5etree__tostring(((struct LxmlElement *)__pyx_t_3), __pyx_t_2, __pyx_v_doctype, __pyx_v_method, 0, 1, __pyx_v_pretty_print, __pyx_v_with_tail, -1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3165
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3169
* else:
* raise TypeError, u"Type '%s' cannot be serialized." % \
* type(element_or_tree) # <<<<<<<<<<<<<<
*
* def parse(source, _BaseParser parser=None, *, base_url=None):
*/
- __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_123), ((PyObject *)Py_TYPE(__pyx_v_element_or_tree))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_123), ((PyObject *)Py_TYPE(__pyx_v_element_or_tree))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_4), 0, 0);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L3:;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__source,&__pyx_n_s__parser,&__pyx_n_s__base_url,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3167
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3171
* type(element_or_tree)
*
* def parse(source, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
if (value) { values[index] = value; kw_args--; }
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return NULL;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_36parse(__pyx_self, __pyx_v_source, __pyx_v_parser, __pyx_v_base_url);
goto __pyx_L0;
__pyx_L1_error:;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("parse", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3192
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3196
* """
* cdef _Document doc
* try: # <<<<<<<<<<<<<<
__Pyx_XGOTREF(__pyx_t_3);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3193
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3197
* cdef _Document doc
* try:
* doc = _parseDocument(source, parser, base_url) # <<<<<<<<<<<<<<
* return _elementTreeFactory(doc, None)
* except _TargetParserResult, result_container:
*/
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3193; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__parseDocument(__pyx_v_source, __pyx_v_parser, __pyx_v_base_url)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
__pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3194
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3198
* try:
* doc = _parseDocument(source, parser, base_url)
* return _elementTreeFactory(doc, None) # <<<<<<<<<<<<<<
* return result_container.result
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3194; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3198; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_r = __pyx_t_4;
__pyx_t_4 = 0;
__pyx_L3_error:;
__Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3195
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3199
* doc = _parseDocument(source, parser, base_url)
* return _elementTreeFactory(doc, None)
* except _TargetParserResult, result_container: # <<<<<<<<<<<<<<
* return result_container.result
*
*/
- __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3195; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ __pyx_t_4 = __Pyx_GetName(__pyx_m, __pyx_n_s___TargetParserResult); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_4);
__pyx_t_5 = PyErr_ExceptionMatches(__pyx_t_4);
__Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
if (__pyx_t_5) {
__Pyx_AddTraceback("lxml.etree.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3195; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_6, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3199; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_6);
__pyx_v_result_container = __pyx_t_6;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3196
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3200
* return _elementTreeFactory(doc, None)
* except _TargetParserResult, result_container:
* return result_container.result # <<<<<<<<<<<<<<
*
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_8 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3196; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
+ __pyx_t_8 = PyObject_GetAttr(__pyx_v_result_container, __pyx_n_s__result); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3200; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
__Pyx_GOTREF(__pyx_t_8);
__pyx_r = __pyx_t_8;
__pyx_t_8 = 0;
* if method is None:
* return OUTPUT_METHOD_XML # <<<<<<<<<<<<<<
* method = method.lower()
- * if method == u"xml":
+ * if method == "xml":
*/
__pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
goto __pyx_L0;
* if method is None:
* return OUTPUT_METHOD_XML
* method = method.lower() # <<<<<<<<<<<<<<
- * if method == u"xml":
+ * if method == "xml":
* return OUTPUT_METHOD_XML
*/
__pyx_t_2 = PyObject_GetAttr(__pyx_v_method, __pyx_n_s__lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":16
* return OUTPUT_METHOD_XML
* method = method.lower()
- * if method == u"xml": # <<<<<<<<<<<<<<
+ * if method == "xml": # <<<<<<<<<<<<<<
* return OUTPUT_METHOD_XML
- * if method == u"html":
+ * if method == "html":
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__xml), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_s__xml), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":17
* method = method.lower()
- * if method == u"xml":
+ * if method == "xml":
* return OUTPUT_METHOD_XML # <<<<<<<<<<<<<<
- * if method == u"html":
+ * if method == "html":
* return OUTPUT_METHOD_HTML
*/
__pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML;
__pyx_L4:;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":18
- * if method == u"xml":
+ * if method == "xml":
* return OUTPUT_METHOD_XML
- * if method == u"html": # <<<<<<<<<<<<<<
+ * if method == "html": # <<<<<<<<<<<<<<
* return OUTPUT_METHOD_HTML
- * if method == u"text":
+ * if method == "text":
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__html), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_s__html), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":19
* return OUTPUT_METHOD_XML
- * if method == u"html":
+ * if method == "html":
* return OUTPUT_METHOD_HTML # <<<<<<<<<<<<<<
- * if method == u"text":
+ * if method == "text":
* return OUTPUT_METHOD_TEXT
*/
__pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_HTML;
__pyx_L5:;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":20
- * if method == u"html":
+ * if method == "html":
* return OUTPUT_METHOD_HTML
- * if method == u"text": # <<<<<<<<<<<<<<
+ * if method == "text": # <<<<<<<<<<<<<<
* return OUTPUT_METHOD_TEXT
- * raise ValueError, u"unknown output method %r" % method
+ * raise ValueError(u"unknown output method %r" % method)
*/
- __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_u__text), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_RichCompare(__pyx_v_method, ((PyObject *)__pyx_n_s__text), Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 20; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if (__pyx_t_1) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":21
* return OUTPUT_METHOD_HTML
- * if method == u"text":
+ * if method == "text":
* return OUTPUT_METHOD_TEXT # <<<<<<<<<<<<<<
- * raise ValueError, u"unknown output method %r" % method
+ * raise ValueError(u"unknown output method %r" % method)
*
*/
__pyx_r = __pyx_e_4lxml_5etree_OUTPUT_METHOD_TEXT;
__pyx_L6:;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":22
- * if method == u"text":
+ * if method == "text":
* return OUTPUT_METHOD_TEXT
- * raise ValueError, u"unknown output method %r" % method # <<<<<<<<<<<<<<
+ * raise ValueError(u"unknown output method %r" % method) # <<<<<<<<<<<<<<
*
* cdef _textToString(xmlNode* c_node, encoding, bint with_tail):
*/
__pyx_t_3 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_217), __pyx_v_method); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3));
- __Pyx_Raise(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_3), 0, 0);
- __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
+ __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_2);
+ PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_t_3));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
+ __pyx_t_3 = 0;
+ __pyx_t_3 = PyObject_Call(__pyx_builtin_ValueError, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_3);
+ __Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
+ __Pyx_Raise(__pyx_t_3, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
{__pyx_filename = __pyx_f[6]; __pyx_lineno = 22; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = 0;
}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":24
- * raise ValueError, u"unknown output method %r" % method
+ * raise ValueError(u"unknown output method %r" % method)
*
* cdef _textToString(xmlNode* c_node, encoding, bint with_tail): # <<<<<<<<<<<<<<
* cdef bint needs_conversion
* try:
* if encoding is _unicode: # <<<<<<<<<<<<<<
* result = (<unsigned char*>tree.xmlBufContent(
- * c_result_buffer))[:tree.xmlBufLength(c_result_buffer)].decode('UTF-8')
+ * c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8')
*/
__pyx_t_4 = (__pyx_v_encoding == __pyx_v_4lxml_5etree__unicode);
if (__pyx_t_4) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":137
* if encoding is _unicode:
* result = (<unsigned char*>tree.xmlBufContent(
- * c_result_buffer))[:tree.xmlBufLength(c_result_buffer)].decode('UTF-8') # <<<<<<<<<<<<<<
+ * c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8') # <<<<<<<<<<<<<<
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent(
*/
- __pyx_t_6 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))), 0, xmlBufLength(__pyx_v_c_result_buffer), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L16;}
+ __pyx_t_6 = ((PyObject *)__Pyx_decode_c_string(((char *)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))), 0, xmlBufUse(__pyx_v_c_result_buffer), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L16;}
__Pyx_GOTREF(((PyObject *)__pyx_t_6));
__pyx_v_result = ((PyObject *)__pyx_t_6);
__pyx_t_6 = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":140
* else:
* result = <bytes>(<unsigned char*>tree.xmlBufContent(
- * c_result_buffer))[:tree.xmlBufLength(c_result_buffer)] # <<<<<<<<<<<<<<
+ * c_result_buffer))[:tree.xmlBufUse(c_result_buffer)] # <<<<<<<<<<<<<<
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer)
*/
- __pyx_t_6 = PyBytes_FromStringAndSize(((const char*)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))) + 0, xmlBufLength(__pyx_v_c_result_buffer) - 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L16;}
+ __pyx_t_6 = PyBytes_FromStringAndSize(((const char*)((unsigned char *)xmlBufContent(__pyx_v_c_result_buffer))) + 0, xmlBufUse(__pyx_v_c_result_buffer) - 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L16;}
__Pyx_GOTREF(((PyObject *)__pyx_t_6));
__Pyx_INCREF(((PyObject *)((PyObject*)__pyx_t_6)));
__pyx_v_result = ((PyObject *)__pyx_t_6);
}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":142
- * c_result_buffer))[:tree.xmlBufLength(c_result_buffer)]
+ * c_result_buffer))[:tree.xmlBufUse(c_result_buffer)]
* finally:
* error_result = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
* if error_result < 0:
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node # <<<<<<<<<<<<<<
* while c_sibling.prev and \
- * (c_sibling.prev.type == tree.XML_PI_NODE or \
+ * (c_sibling.prev.type == tree.XML_PI_NODE or
*/
__pyx_v_c_sibling = __pyx_v_c_node;
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node
* while c_sibling.prev and \ # <<<<<<<<<<<<<<
- * (c_sibling.prev.type == tree.XML_PI_NODE or \
- * c_sibling.prev.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.prev.type == tree.XML_PI_NODE or
+ * c_sibling.prev.type == tree.XML_COMMENT_NODE):
*/
while (1) {
if ((__pyx_v_c_sibling->prev != 0)) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":335
* c_sibling = c_node
* while c_sibling.prev and \
- * (c_sibling.prev.type == tree.XML_PI_NODE or \ # <<<<<<<<<<<<<<
- * c_sibling.prev.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.prev.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
+ * c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev
*/
__pyx_t_2 = (__pyx_v_c_sibling->prev->type == XML_PI_NODE);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":336
* while c_sibling.prev and \
- * (c_sibling.prev.type == tree.XML_PI_NODE or \
- * c_sibling.prev.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
+ * (c_sibling.prev.type == tree.XML_PI_NODE or
+ * c_sibling.prev.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
* c_sibling = c_sibling.prev
* while c_sibling is not c_node and not c_buffer.error:
*/
if (!__pyx_t_2) break;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":337
- * (c_sibling.prev.type == tree.XML_PI_NODE or \
- * c_sibling.prev.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.prev.type == tree.XML_PI_NODE or
+ * c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev # <<<<<<<<<<<<<<
* while c_sibling is not c_node and not c_buffer.error:
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":338
- * c_sibling.prev.type == tree.XML_COMMENT_NODE):
+ * c_sibling.prev.type == tree.XML_COMMENT_NODE):
* c_sibling = c_sibling.prev
* while c_sibling is not c_node and not c_buffer.error: # <<<<<<<<<<<<<<
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node.next # <<<<<<<<<<<<<<
* while not c_buffer.error and c_sibling and \
- * (c_sibling.type == tree.XML_PI_NODE or \
+ * (c_sibling.type == tree.XML_PI_NODE or
*/
__pyx_t_3 = __pyx_v_c_node->next;
__pyx_v_c_sibling = __pyx_t_3;
* # we are at a root node, so add PI and comment siblings
* c_sibling = c_node.next
* while not c_buffer.error and c_sibling and \ # <<<<<<<<<<<<<<
- * (c_sibling.type == tree.XML_PI_NODE or \
- * c_sibling.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.type == tree.XML_PI_NODE or
+ * c_sibling.type == tree.XML_COMMENT_NODE):
*/
while (1) {
__pyx_t_2 = (!__pyx_v_c_buffer->error);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":353
* c_sibling = c_node.next
* while not c_buffer.error and c_sibling and \
- * (c_sibling.type == tree.XML_PI_NODE or \ # <<<<<<<<<<<<<<
- * c_sibling.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.type == tree.XML_PI_NODE or # <<<<<<<<<<<<<<
+ * c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print:
*/
__pyx_t_1 = (__pyx_v_c_sibling->type == XML_PI_NODE);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":354
* while not c_buffer.error and c_sibling and \
- * (c_sibling.type == tree.XML_PI_NODE or \
- * c_sibling.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
+ * (c_sibling.type == tree.XML_PI_NODE or
+ * c_sibling.type == tree.XML_COMMENT_NODE): # <<<<<<<<<<<<<<
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
*/
if (!__pyx_t_5) break;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":355
- * (c_sibling.type == tree.XML_PI_NODE or \
- * c_sibling.type == tree.XML_COMMENT_NODE):
+ * (c_sibling.type == tree.XML_PI_NODE or
+ * c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print: # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWriteString(c_buffer, "\n")
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
if (__pyx_v_pretty_print) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":356
- * c_sibling.type == tree.XML_COMMENT_NODE):
+ * c_sibling.type == tree.XML_COMMENT_NODE):
* if pretty_print:
* tree.xmlOutputBufferWriteString(c_buffer, "\n") # <<<<<<<<<<<<<<
* tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
* def __cinit__(self, filelike, exc_context=None, compression=None):
* if compression is not None and compression > 0: # <<<<<<<<<<<<<<
* filelike = gzip.GzipFile(
- * fileobj=filelike, mode=u'wb', compresslevel=compression)
+ * fileobj=filelike, mode='wb', compresslevel=compression)
*/
__pyx_t_1 = (__pyx_v_compression != Py_None);
if (__pyx_t_1) {
* def __cinit__(self, filelike, exc_context=None, compression=None):
* if compression is not None and compression > 0:
* filelike = gzip.GzipFile( # <<<<<<<<<<<<<<
- * fileobj=filelike, mode=u'wb', compresslevel=compression)
+ * fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close
*/
__pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":374
* if compression is not None and compression > 0:
* filelike = gzip.GzipFile(
- * fileobj=filelike, mode=u'wb', compresslevel=compression) # <<<<<<<<<<<<<<
+ * fileobj=filelike, mode='wb', compresslevel=compression) # <<<<<<<<<<<<<<
* self._close_filelike = filelike.close
* self._filelike = filelike
*/
if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__fileobj), __pyx_v_filelike) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_u__wb)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_s__wb)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (PyDict_SetItem(__pyx_t_5, ((PyObject *)__pyx_n_s__compresslevel), __pyx_v_compression) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_6 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":375
* filelike = gzip.GzipFile(
- * fileobj=filelike, mode=u'wb', compresslevel=compression)
+ * fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close # <<<<<<<<<<<<<<
* self._filelike = filelike
* if exc_context is None:
__pyx_L3:;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":376
- * fileobj=filelike, mode=u'wb', compresslevel=compression)
+ * fileobj=filelike, mode='wb', compresslevel=compression)
* self._close_filelike = filelike.close
* self._filelike = filelike # <<<<<<<<<<<<<<
* if exc_context is None:
* self._exc_context._store_raised()
* return -1 # <<<<<<<<<<<<<<
*
- * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):
+ * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length):
*/
__pyx_r = -1;
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":415
* return -1
*
- * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len): # <<<<<<<<<<<<<<
- * return (<_FilelikeWriter>ctxt).write(c_buffer, len)
+ * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length): # <<<<<<<<<<<<<<
+ * return (<_FilelikeWriter>ctxt).write(c_buffer, length)
*
*/
-static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_len) {
+static int __pyx_f_4lxml_5etree__writeFilelikeWriter(void *__pyx_v_ctxt, char *__pyx_v_c_buffer, int __pyx_v_length) {
int __pyx_r;
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("_writeFilelikeWriter", 0);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":416
*
- * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):
- * return (<_FilelikeWriter>ctxt).write(c_buffer, len) # <<<<<<<<<<<<<<
+ * cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length):
+ * return (<_FilelikeWriter>ctxt).write(c_buffer, length) # <<<<<<<<<<<<<<
*
* cdef int _closeFilelikeWriter(void* ctxt):
*/
- __pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_write(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_len);
+ __pyx_r = __pyx_f_4lxml_5etree_15_FilelikeWriter_write(((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_v_ctxt), __pyx_v_c_buffer, __pyx_v_length);
goto __pyx_L0;
__pyx_r = 0;
}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":418
- * return (<_FilelikeWriter>ctxt).write(c_buffer, len)
+ * return (<_FilelikeWriter>ctxt).write(c_buffer, length)
*
* cdef int _closeFilelikeWriter(void* ctxt): # <<<<<<<<<<<<<<
* return (<_FilelikeWriter>ctxt).close()
* if compression:
* bytes_out = BytesIO() # <<<<<<<<<<<<<<
* gzip_file = gzip.GzipFile(
- * fileobj=bytes_out, mode=u'wb', compresslevel=compression)
+ * fileobj=bytes_out, mode='wb', compresslevel=compression)
*/
__pyx_t_2 = PyObject_Call(__pyx_v_4lxml_5etree_BytesIO, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
* if compression:
* bytes_out = BytesIO()
* gzip_file = gzip.GzipFile( # <<<<<<<<<<<<<<
- * fileobj=bytes_out, mode=u'wb', compresslevel=compression)
+ * fileobj=bytes_out, mode='wb', compresslevel=compression)
* try:
*/
__pyx_t_2 = PyObject_GetAttr(__pyx_v_4lxml_5etree_gzip, __pyx_n_s__GzipFile); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":448
* bytes_out = BytesIO()
* gzip_file = gzip.GzipFile(
- * fileobj=bytes_out, mode=u'wb', compresslevel=compression) # <<<<<<<<<<<<<<
+ * fileobj=bytes_out, mode='wb', compresslevel=compression) # <<<<<<<<<<<<<<
* try:
* gzip_file.write(data)
*/
if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__fileobj), __pyx_v_bytes_out) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_u__wb)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__mode), ((PyObject *)__pyx_n_s__wb)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_5 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
if (PyDict_SetItem(__pyx_t_4, ((PyObject *)__pyx_n_s__compresslevel), __pyx_t_5) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":449
* gzip_file = gzip.GzipFile(
- * fileobj=bytes_out, mode=u'wb', compresslevel=compression)
+ * fileobj=bytes_out, mode='wb', compresslevel=compression)
* try: # <<<<<<<<<<<<<<
* gzip_file.write(data)
* finally:
/*try:*/ {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":450
- * fileobj=bytes_out, mode=u'wb', compresslevel=compression)
+ * fileobj=bytes_out, mode='wb', compresslevel=compression)
* try:
* gzip_file.write(data) # <<<<<<<<<<<<<<
* finally:
* data = bytes_out
* if _isString(f): # <<<<<<<<<<<<<<
* filename8 = _encodeFilename(f)
- * f = open(filename8, u'wb')
+ * f = open(filename8, 'wb')
*/
__pyx_t_1 = _isString(__pyx_v_f);
if (__pyx_t_1) {
* data = bytes_out
* if _isString(f):
* filename8 = _encodeFilename(f) # <<<<<<<<<<<<<<
- * f = open(filename8, u'wb')
+ * f = open(filename8, 'wb')
* try:
*/
__pyx_t_4 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":456
* if _isString(f):
* filename8 = _encodeFilename(f)
- * f = open(filename8, u'wb') # <<<<<<<<<<<<<<
+ * f = open(filename8, 'wb') # <<<<<<<<<<<<<<
* try:
* f.write(data)
*/
__Pyx_INCREF(__pyx_v_filename8);
PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_filename8);
__Pyx_GIVEREF(__pyx_v_filename8);
- __Pyx_INCREF(((PyObject *)__pyx_n_u__wb));
- PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_u__wb));
- __Pyx_GIVEREF(((PyObject *)__pyx_n_u__wb));
+ __Pyx_INCREF(((PyObject *)__pyx_n_s__wb));
+ PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_n_s__wb));
+ __Pyx_GIVEREF(((PyObject *)__pyx_n_s__wb));
__pyx_t_2 = PyObject_Call(__pyx_builtin_open, ((PyObject *)__pyx_t_4), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_4)); __pyx_t_4 = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":457
* filename8 = _encodeFilename(f)
- * f = open(filename8, u'wb')
+ * f = open(filename8, 'wb')
* try: # <<<<<<<<<<<<<<
* f.write(data)
* finally:
/*try:*/ {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":458
- * f = open(filename8, u'wb')
+ * f = open(filename8, 'wb')
* try:
* f.write(data) # <<<<<<<<<<<<<<
* finally:
* if c_buffer is NULL:
* return python.PyErr_SetFromErrno(IOError) # raises IOError # <<<<<<<<<<<<<<
* writer = None
- * elif hasattr(f, u'write'):
+ * elif hasattr(f, 'write'):
*/
__Pyx_XDECREF(__pyx_r);
__pyx_t_2 = PyErr_SetFromErrno(__pyx_builtin_IOError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
* if c_buffer is NULL:
* return python.PyErr_SetFromErrno(IOError) # raises IOError
* writer = None # <<<<<<<<<<<<<<
- * elif hasattr(f, u'write'):
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression)
*/
__Pyx_INCREF(Py_None);
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":502
* return python.PyErr_SetFromErrno(IOError) # raises IOError
* writer = None
- * elif hasattr(f, u'write'): # <<<<<<<<<<<<<<
+ * elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(enchandler)
*/
- __pyx_t_1 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_u__write)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
+ __pyx_t_1 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_s__write)); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
if (__pyx_t_1) {
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":503
* writer = None
- * elif hasattr(f, u'write'):
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression) # <<<<<<<<<<<<<<
* c_buffer = writer._createOutputBuffer(enchandler)
* else:
__pyx_t_3 = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":504
- * elif hasattr(f, u'write'):
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(enchandler) # <<<<<<<<<<<<<<
* else:
char *__pyx_v_c_filename;
xmlDoc *__pyx_v_c_base_doc;
xmlDoc *__pyx_v_c_doc;
- int __pyx_v_bytes;
+ int __pyx_v_bytes_count;
+ int __pyx_v_error;
PyObject *__pyx_v_filename8 = NULL;
PyObject *__pyx_v_message = NULL;
struct __pyx_obj_4lxml_5etree__ErrorLog *__pyx_v_errors = NULL;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":543
* cdef xmlDoc* c_base_doc
* cdef xmlDoc* c_doc
- * cdef int bytes = -1 # <<<<<<<<<<<<<<
+ * cdef int bytes_count, error = 0 # <<<<<<<<<<<<<<
*
* c_base_doc = element._c_node.doc
*/
- __pyx_v_bytes = -1;
+ __pyx_v_error = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":545
- * cdef int bytes = -1
+ * cdef int bytes_count, error = 0
*
* c_base_doc = element._c_node.doc # <<<<<<<<<<<<<<
* c_doc = _fakeRootDoc(c_base_doc, element._c_node)
* c_base_doc = element._c_node.doc
* c_doc = _fakeRootDoc(c_base_doc, element._c_node) # <<<<<<<<<<<<<<
* try:
- * c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
+ * c_inclusive_ns_prefixes = (
*/
__pyx_t_1 = __pyx_f_4lxml_5etree__fakeRootDoc(__pyx_v_c_base_doc, __pyx_v_element->_c_node); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_v_c_doc = __pyx_t_1;
* c_base_doc = element._c_node.doc
* c_doc = _fakeRootDoc(c_base_doc, element._c_node)
* try: # <<<<<<<<<<<<<<
- * c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
- *
+ * c_inclusive_ns_prefixes = (
+ * _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
*/
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":548
- * c_doc = _fakeRootDoc(c_base_doc, element._c_node)
- * try:
- * c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL # <<<<<<<<<<<<<<
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":550
+ * c_inclusive_ns_prefixes = (
+ * _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
+ * if inclusive_ns_prefixes else NULL) # <<<<<<<<<<<<<<
*
* if _isString(f):
*/
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L4;}
if (__pyx_t_3) {
- __pyx_t_4 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L4;}
+
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":549
+ * try:
+ * c_inclusive_ns_prefixes = (
+ * _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) # <<<<<<<<<<<<<<
+ * if inclusive_ns_prefixes else NULL)
+ *
+ */
+ __pyx_t_4 = __pyx_f_4lxml_5etree__convert_ns_prefixes(__pyx_v_c_doc->dict, __pyx_v_inclusive_ns_prefixes); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L4;}
__pyx_t_2 = __pyx_t_4;
} else {
+
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":550
+ * c_inclusive_ns_prefixes = (
+ * _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
+ * if inclusive_ns_prefixes else NULL) # <<<<<<<<<<<<<<
+ *
+ * if _isString(f):
+ */
__pyx_t_2 = NULL;
}
__pyx_v_c_inclusive_ns_prefixes = __pyx_t_2;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":550
- * c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":552
+ * if inclusive_ns_prefixes else NULL)
*
* if _isString(f): # <<<<<<<<<<<<<<
* filename8 = _encodeFilename(f)
__pyx_t_3 = _isString(__pyx_v_f);
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":551
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":553
*
* if _isString(f):
* filename8 = _encodeFilename(f) # <<<<<<<<<<<<<<
* c_filename = _cstr(filename8)
* with nogil:
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree__encodeFilename(__pyx_v_f); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_filename8 = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":552
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":554
* if _isString(f):
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8) # <<<<<<<<<<<<<<
* with nogil:
- * bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * error = c14n.xmlC14NDocSave(
*/
__pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename8);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":553
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":555
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8)
* with nogil: # <<<<<<<<<<<<<<
- * bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_filename, compression)
+ * error = c14n.xmlC14NDocSave(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
{
#ifdef WITH_THREAD
Py_UNBLOCK_THREADS
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":555
- * with nogil:
- * bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_filename, compression) # <<<<<<<<<<<<<<
- * elif hasattr(f, u'write'):
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":558
+ * error = c14n.xmlC14NDocSave(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * with_comments, c_filename, compression) # <<<<<<<<<<<<<<
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression)
*/
- __pyx_v_bytes = xmlC14NDocSave(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_filename, __pyx_v_compression);
+ __pyx_v_error = xmlC14NDocSave(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_filename, __pyx_v_compression);
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":553
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":555
* filename8 = _encodeFilename(f)
* c_filename = _cstr(filename8)
* with nogil: # <<<<<<<<<<<<<<
- * bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_filename, compression)
+ * error = c14n.xmlC14NDocSave(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
/*finally:*/ {
Py_BLOCK_THREADS
goto __pyx_L6;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":556
- * bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_filename, compression)
- * elif hasattr(f, u'write'): # <<<<<<<<<<<<<<
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":559
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * with_comments, c_filename, compression)
+ * elif hasattr(f, 'write'): # <<<<<<<<<<<<<<
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
*/
- __pyx_t_3 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_u__write)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 556; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_3 = PyObject_HasAttr(__pyx_v_f, ((PyObject *)__pyx_n_s__write)); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L4;}
if (__pyx_t_3) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":557
- * with_comments, c_filename, compression)
- * elif hasattr(f, u'write'):
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":560
+ * with_comments, c_filename, compression)
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression) # <<<<<<<<<<<<<<
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log:
*/
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_f);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_f);
__Pyx_GIVEREF(__pyx_v_f);
- __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(((PyObject *)__pyx_t_6));
- __pyx_t_7 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_7 = PyInt_FromLong(__pyx_v_compression); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_7);
- if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__compression), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ if (PyDict_SetItem(__pyx_t_6, ((PyObject *)__pyx_n_s__compression), __pyx_t_7) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
- __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FilelikeWriter)), ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_7 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FilelikeWriter)), ((PyObject *)__pyx_t_5), ((PyObject *)__pyx_t_6)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__FilelikeWriter *)__pyx_t_7);
__pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":558
- * elif hasattr(f, u'write'):
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":561
+ * elif hasattr(f, 'write'):
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL) # <<<<<<<<<<<<<<
* with writer.error_log:
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * bytes_count = c14n.xmlC14NDocSaveTo(
*/
- __pyx_t_8 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_8 = __pyx_f_4lxml_5etree_15_FilelikeWriter__createOutputBuffer(__pyx_v_writer, NULL); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L4;}
__pyx_v_c_buffer = __pyx_t_8;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":559
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":562
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log: # <<<<<<<<<<<<<<
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_buffer)
+ * bytes_count = c14n.xmlC14NDocSaveTo(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
/*with:*/ {
- __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_writer->error_log), __pyx_n_s____exit__); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_9 = PyObject_GetAttr(((PyObject *)__pyx_v_writer->error_log), __pyx_n_s____exit__); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_10 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_writer->error_log); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
+ __pyx_t_10 = __pyx_f_4lxml_5etree_9_ErrorLog___enter__(__pyx_v_writer->error_log); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
/*try:*/ {
{
__Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
__Pyx_XGOTREF(__pyx_t_13);
/*try:*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":561
- * with writer.error_log:
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_buffer) # <<<<<<<<<<<<<<
- * if bytes >= 0:
- * bytes = tree.xmlOutputBufferClose(c_buffer)
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":565
+ * bytes_count = c14n.xmlC14NDocSaveTo(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * with_comments, c_buffer) # <<<<<<<<<<<<<<
+ * error = tree.xmlOutputBufferClose(c_buffer)
+ * if bytes_count < 0:
*/
- __pyx_v_bytes = xmlC14NDocSaveTo(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_buffer);
+ __pyx_v_bytes_count = xmlC14NDocSaveTo(__pyx_v_c_doc, NULL, __pyx_v_exclusive, __pyx_v_c_inclusive_ns_prefixes, __pyx_v_with_comments, __pyx_v_c_buffer);
+
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":566
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ * with_comments, c_buffer)
+ * error = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
+ * if bytes_count < 0:
+ * error = bytes_count
+ */
+ __pyx_v_error = xmlOutputBufferClose(__pyx_v_c_buffer);
}
__Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
__Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
__Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":559
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":562
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log: # <<<<<<<<<<<<<<
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_buffer)
+ * bytes_count = c14n.xmlC14NDocSaveTo(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
/*except:*/ {
__Pyx_AddTraceback("lxml.etree._tofilelikeC14N", __pyx_clineno, __pyx_lineno, __pyx_filename);
- if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
+ if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
+ __pyx_t_14 = PyTuple_New(3); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
__Pyx_GOTREF(__pyx_t_14);
__Pyx_INCREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_7);
__Pyx_GIVEREF(__pyx_t_5);
__pyx_t_15 = PyObject_Call(__pyx_t_9, __pyx_t_14, NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
+ if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
__Pyx_GOTREF(__pyx_t_15);
__pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_15);
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
- if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
+ if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
__pyx_t_16 = (!__pyx_t_3);
if (__pyx_t_16) {
__Pyx_GIVEREF(__pyx_t_7);
__Pyx_GIVEREF(__pyx_t_5);
__Pyx_ErrRestore(__pyx_t_7, __pyx_t_6, __pyx_t_5);
__pyx_t_7 = 0; __pyx_t_6 = 0; __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L16_except_error;}
goto __pyx_L24;
}
__pyx_L24:;
if (__pyx_t_9) {
__pyx_t_13 = PyObject_Call(__pyx_t_9, __pyx_k_tuple_240, NULL);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
- if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(__pyx_t_13);
__pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_13);
__Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
- if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ if (unlikely(__pyx_t_16 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L4;}
}
}
goto __pyx_L25;
__pyx_L25:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":562
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_buffer)
- * if bytes >= 0: # <<<<<<<<<<<<<<
- * bytes = tree.xmlOutputBufferClose(c_buffer)
- * else:
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":567
+ * with_comments, c_buffer)
+ * error = tree.xmlOutputBufferClose(c_buffer)
+ * if bytes_count < 0: # <<<<<<<<<<<<<<
+ * error = bytes_count
+ * else:
*/
- __pyx_t_16 = (__pyx_v_bytes >= 0);
+ __pyx_t_16 = (__pyx_v_bytes_count < 0);
if (__pyx_t_16) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":563
- * with_comments, c_buffer)
- * if bytes >= 0:
- * bytes = tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
- * else:
- * tree.xmlOutputBufferClose(c_buffer)
- */
- __pyx_v_bytes = xmlOutputBufferClose(__pyx_v_c_buffer);
- goto __pyx_L26;
- }
- /*else*/ {
-
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":565
- * bytes = tree.xmlOutputBufferClose(c_buffer)
- * else:
- * tree.xmlOutputBufferClose(c_buffer) # <<<<<<<<<<<<<<
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":568
+ * error = tree.xmlOutputBufferClose(c_buffer)
+ * if bytes_count < 0:
+ * error = bytes_count # <<<<<<<<<<<<<<
* else:
- * raise TypeError, \
+ * raise TypeError(u"File or filename expected, got '%s'" %
*/
- xmlOutputBufferClose(__pyx_v_c_buffer);
+ __pyx_v_error = __pyx_v_bytes_count;
+ goto __pyx_L26;
}
__pyx_L26:;
goto __pyx_L6;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":568
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":571
* else:
- * raise TypeError, \
- * u"File or filename expected, got '%s'" % python._fqtypename(f).decode('UTF-8') # <<<<<<<<<<<<<<
+ * raise TypeError(u"File or filename expected, got '%s'" %
+ * python._fqtypename(f).decode('UTF-8')) # <<<<<<<<<<<<<<
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
*/
__pyx_t_17 = _fqtypename(__pyx_v_f);
- __pyx_t_5 = ((PyObject *)__Pyx_decode_c_string(__pyx_t_17, 0, strlen(__pyx_t_17), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_5 = ((PyObject *)__Pyx_decode_c_string(__pyx_t_17, 0, strlen(__pyx_t_17), NULL, NULL, PyUnicode_DecodeUTF8)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_239), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_6 = PyNumber_Remainder(((PyObject *)__pyx_kp_u_239), ((PyObject *)__pyx_t_5)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L4;}
__Pyx_GOTREF(((PyObject *)__pyx_t_6));
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __Pyx_Raise(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_6), 0, 0);
- __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __Pyx_GOTREF(__pyx_t_5);
+ PyTuple_SET_ITEM(__pyx_t_5, 0, ((PyObject *)__pyx_t_6));
+ __Pyx_GIVEREF(((PyObject *)__pyx_t_6));
+ __pyx_t_6 = 0;
+ __pyx_t_6 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L4;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
+ __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L4;}
}
__pyx_L6:;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":570
- * u"File or filename expected, got '%s'" % python._fqtypename(f).decode('UTF-8')
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":573
+ * python._fqtypename(f).decode('UTF-8'))
* finally:
* _destroyFakeDoc(c_base_doc, c_doc) # <<<<<<<<<<<<<<
* if c_inclusive_ns_prefixes is not NULL:
__pyx_L5:;
__pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_c_base_doc, __pyx_v_c_doc);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":571
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":574
* finally:
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL: # <<<<<<<<<<<<<<
__pyx_t_16 = (__pyx_v_c_inclusive_ns_prefixes != NULL);
if (__pyx_t_16) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":572
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":575
* _destroyFakeDoc(c_base_doc, c_doc)
* if c_inclusive_ns_prefixes is not NULL:
* python.PyMem_Free(c_inclusive_ns_prefixes) # <<<<<<<<<<<<<<
}
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":574
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":577
* python.PyMem_Free(c_inclusive_ns_prefixes)
*
* if writer is not None: # <<<<<<<<<<<<<<
__pyx_t_16 = (((PyObject *)__pyx_v_writer) != Py_None);
if (__pyx_t_16) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":575
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":578
*
* if writer is not None:
* writer._exc_context._raise_if_stored() # <<<<<<<<<<<<<<
*
- * if bytes < 0:
+ * if error < 0:
*/
- __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = ((struct __pyx_vtabstruct_4lxml_5etree__ExceptionContext *)__pyx_v_writer->_exc_context->__pyx_vtab)->_raise_if_stored(__pyx_v_writer->_exc_context); if (unlikely(__pyx_t_10 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L29;
}
__pyx_L29:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":577
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":580
* writer._exc_context._raise_if_stored()
*
- * if bytes < 0: # <<<<<<<<<<<<<<
+ * if error < 0: # <<<<<<<<<<<<<<
* message = u"C14N failed"
* if writer is not None:
*/
- __pyx_t_16 = (__pyx_v_bytes < 0);
+ __pyx_t_16 = (__pyx_v_error < 0);
if (__pyx_t_16) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":578
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":581
*
- * if bytes < 0:
+ * if error < 0:
* message = u"C14N failed" # <<<<<<<<<<<<<<
* if writer is not None:
* errors = writer.error_log
__Pyx_INCREF(((PyObject *)__pyx_kp_u_221));
__pyx_v_message = ((PyObject *)__pyx_kp_u_221);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":579
- * if bytes < 0:
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":582
+ * if error < 0:
* message = u"C14N failed"
* if writer is not None: # <<<<<<<<<<<<<<
* errors = writer.error_log
__pyx_t_16 = (((PyObject *)__pyx_v_writer) != Py_None);
if (__pyx_t_16) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":580
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":583
* message = u"C14N failed"
* if writer is not None:
* errors = writer.error_log # <<<<<<<<<<<<<<
__pyx_v_errors = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_6);
__pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":581
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":584
* if writer is not None:
* errors = writer.error_log
* if len(errors): # <<<<<<<<<<<<<<
* message = errors[0].message
- * raise C14NError, message
+ * raise C14NError(message)
*/
- __pyx_t_18 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_18 = PyObject_Length(((PyObject *)__pyx_v_errors)); if (unlikely(__pyx_t_18 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_18) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":582
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":585
* errors = writer.error_log
* if len(errors):
* message = errors[0].message # <<<<<<<<<<<<<<
- * raise C14NError, message
+ * raise C14NError(message)
*
*/
- __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_GetItemInt(((PyObject *)__pyx_v_errors), 0, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__message); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetAttr(__pyx_t_6, __pyx_n_s__message); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(__pyx_v_message);
}
__pyx_L31:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":583
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":586
* if len(errors):
* message = errors[0].message
- * raise C14NError, message # <<<<<<<<<<<<<<
+ * raise C14NError(message) # <<<<<<<<<<<<<<
*
* # incremental serialisation
*/
- __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__C14NError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__C14NError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __Pyx_Raise(__pyx_t_5, __pyx_v_message, 0, 0);
+ __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_6);
+ __Pyx_INCREF(__pyx_v_message);
+ PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_message);
+ __Pyx_GIVEREF(__pyx_v_message);
+ __pyx_t_7 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
+ __Pyx_Raise(__pyx_t_7, 0, 0, 0);
+ __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L30;
}
__pyx_L30:;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__output_file,&__pyx_n_s__encoding,&__pyx_n_s__compression,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":613
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":616
* cdef _IncrementalFileWriter writer
*
* def __init__(self, output_file not None, encoding=None, compression=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.xmlfile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
if (unlikely(((PyObject *)__pyx_v_output_file) == Py_None)) {
- PyErr_Format(PyExc_TypeError, "Argument 'output_file' must not be None"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 613; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyErr_Format(PyExc_TypeError, "Argument 'output_file' must not be None"); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_r = __pyx_pf_4lxml_5etree_7xmlfile___init__(((struct __pyx_obj_4lxml_5etree_xmlfile *)__pyx_v_self), __pyx_v_output_file, __pyx_v_encoding, __pyx_v_compression);
goto __pyx_L0;
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__init__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":614
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":617
*
* def __init__(self, output_file not None, encoding=None, compression=None):
* self.output_file = output_file # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->output_file);
__pyx_v_self->output_file = __pyx_v_output_file;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":615
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":618
* def __init__(self, output_file not None, encoding=None, compression=None):
* self.output_file = output_file
* self.encoding = _utf8orNone(encoding) # <<<<<<<<<<<<<<
* self.compresslevel = compression or 0
*
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_encoding)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 615; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_encoding)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 618; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->encoding);
__pyx_v_self->encoding = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":616
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":619
* self.output_file = output_file
* self.encoding = _utf8orNone(encoding)
* self.compresslevel = compression or 0 # <<<<<<<<<<<<<<
*
* def __enter__(self):
*/
- __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_compression); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (!__pyx_t_2) {
__Pyx_INCREF(__pyx_int_0);
__pyx_t_1 = __pyx_int_0;
__Pyx_INCREF(__pyx_v_compression);
__pyx_t_1 = __pyx_v_compression;
}
- __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyInt_AsInt(__pyx_t_1); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_v_self->compresslevel = __pyx_t_3;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":618
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":621
* self.compresslevel = compression or 0
*
* def __enter__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__enter__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":619
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":622
*
* def __enter__(self):
* assert self.output_file is not None # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->output_file != Py_None);
if (unlikely(!__pyx_t_1)) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 622; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":621
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":624
* assert self.output_file is not None
* cdef _IncrementalFileWriter writer = _IncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel) # <<<<<<<<<<<<<<
* self.writer = writer
* return writer
*/
- __pyx_t_2 = PyInt_FromLong(__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_self->compresslevel); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(__pyx_v_self->output_file);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_self->output_file);
PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_2 = 0;
- __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IncrementalFileWriter)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 620; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__IncrementalFileWriter)), ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__pyx_v_writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_t_2);
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":622
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":625
* cdef _IncrementalFileWriter writer = _IncrementalFileWriter(
* self.output_file, self.encoding, self.compresslevel)
* self.writer = writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->writer));
__pyx_v_self->writer = __pyx_v_writer;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":623
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":626
* self.output_file, self.encoding, self.compresslevel)
* self.writer = writer
* return writer # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 625; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree.xmlfile.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":625
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":628
* return writer
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__exit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":626
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":629
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self.writer is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_self->writer) != Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":627
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":630
* def __exit__(self, exc_type, exc_val, exc_tb):
* if self.writer is not None:
* old_writer, self.writer = self.writer, None # <<<<<<<<<<<<<<
__pyx_v_self->writer = ((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_t_3);
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":628
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":631
* if self.writer is not None:
* old_writer, self.writer = self.writer, None
* raise_on_error = exc_type is None # <<<<<<<<<<<<<<
*
*/
__pyx_t_1 = (__pyx_v_exc_type == Py_None);
- __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 628; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 631; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__pyx_v_raise_on_error = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":629
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":632
* old_writer, self.writer = self.writer, None
* raise_on_error = exc_type is None
* old_writer._close(raise_on_error) # <<<<<<<<<<<<<<
*
* cdef enum _IncrementalFileWriterStatus:
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_raise_on_error); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_v_old_writer, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 629; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_raise_on_error); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__close(__pyx_v_old_writer, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L3;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__encoding)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__compresslevel)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
__pyx_v_outfile = values[0];
__pyx_v_encoding = ((PyObject*)values[1]);
- __pyx_v_compresslevel = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_compresslevel = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_compresslevel == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 648; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_encoding), (&PyBytes_Type), 1, "encoding", 1))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 651; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_22_IncrementalFileWriter___cinit__(((struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *)__pyx_v_self), __pyx_v_outfile, __pyx_v_encoding, __pyx_v_compresslevel);
goto __pyx_L0;
__pyx_L1_error:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":648
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":651
* cdef int _status
*
* def __cinit__(self, outfile, bytes encoding, int compresslevel): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("__cinit__", 0);
__Pyx_INCREF(__pyx_v_encoding);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":649
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":652
*
* def __cinit__(self, outfile, bytes encoding, int compresslevel):
* self._status = WRITER_STARTING # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_STARTING;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":650
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":653
* def __cinit__(self, outfile, bytes encoding, int compresslevel):
* self._status = WRITER_STARTING
* self._element_stack = [] # <<<<<<<<<<<<<<
* if encoding is None:
* encoding = b'ASCII'
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(((PyObject *)__pyx_t_1));
__Pyx_GOTREF(__pyx_v_self->_element_stack);
__pyx_v_self->_element_stack = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":651
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":654
* self._status = WRITER_STARTING
* self._element_stack = []
* if encoding is None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_encoding == ((PyObject*)Py_None));
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":652
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":655
* self._element_stack = []
* if encoding is None:
* encoding = b'ASCII' # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":653
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":656
* if encoding is None:
* encoding = b'ASCII'
* self._encoding = encoding # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_v_self->_encoding);
__pyx_v_self->_encoding = ((PyObject *)__pyx_v_encoding);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":654
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":657
* encoding = b'ASCII'
* self._encoding = encoding
* self._c_encoding = _cstr(encoding) if encoding is not None else NULL # <<<<<<<<<<<<<<
}
__pyx_v_self->_c_encoding = __pyx_t_3;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":655
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":658
* self._encoding = encoding
* self._c_encoding = _cstr(encoding) if encoding is not None else NULL
* self._target = _create_output_buffer(outfile, self._c_encoding, compresslevel, &self._c_out) # <<<<<<<<<<<<<<
*
* def __dealloc__(self):
*/
- __pyx_t_1 = __pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_outfile, __pyx_v_self->_c_encoding, __pyx_v_compresslevel, (&__pyx_v_self->_c_out)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 655; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __pyx_f_4lxml_5etree__create_output_buffer(__pyx_v_outfile, __pyx_v_self->_c_encoding, __pyx_v_compresslevel, (&__pyx_v_self->_c_out)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_target);
__Pyx_RefNannyFinishContext();
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":657
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":660
* self._target = _create_output_buffer(outfile, self._c_encoding, compresslevel, &self._c_out)
*
* def __dealloc__(self): # <<<<<<<<<<<<<<
int __pyx_t_1;
__Pyx_RefNannySetupContext("__dealloc__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":658
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":661
*
* def __dealloc__(self):
* if self._c_out is not NULL: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_c_out != NULL);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":659
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":662
* def __dealloc__(self):
* if self._c_out is not NULL:
* tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__version,&__pyx_n_s__standalone,&__pyx_n_s__doctype,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":661
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":664
* tree.xmlOutputBufferClose(self._c_out)
*
* def write_declaration(self, version=None, standalone=None, doctype=None): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_declaration") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("write_declaration", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.write_declaration", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
__Pyx_INCREF(__pyx_v_version);
__Pyx_INCREF(__pyx_v_doctype);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":666
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":669
* Write an XML declaration and (optionally) a doctype into the file.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!(__pyx_v_self->_c_out != NULL))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 666; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":669
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":672
* cdef const_xmlChar* c_version
* cdef int c_standalone
* if self._status >= WRITER_DECL_WRITTEN: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DECL_WRITTEN);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":670
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":673
* cdef int c_standalone
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written") # <<<<<<<<<<<<<<
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_242), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_242), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":671
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":674
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written")
* version = _utf8orNone(version) # <<<<<<<<<<<<<<
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype)
*/
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_version)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 671; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_version)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_v_version);
__pyx_v_version = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":672
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":675
* raise LxmlSyntaxError("XML declaration already written")
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL # <<<<<<<<<<<<<<
}
__pyx_v_c_version = __pyx_t_4;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":673
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":676
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype) # <<<<<<<<<<<<<<
* if standalone is None:
* c_standalone = -1
*/
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_doctype)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8orNone(__pyx_v_doctype)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 676; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_v_doctype);
__pyx_v_doctype = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":674
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":677
* c_version = _xcstr(version) if version is not None else NULL
* doctype = _utf8orNone(doctype)
* if standalone is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_standalone == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":675
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":678
* doctype = _utf8orNone(doctype)
* if standalone is None:
* c_standalone = -1 # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":677
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":680
* c_standalone = -1
* else:
* c_standalone = 1 if standalone else 0 # <<<<<<<<<<<<<<
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None:
*/
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 677; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_1) {
__pyx_t_5 = 1;
} else {
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":678
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":681
* else:
* c_standalone = 1 if standalone else 0
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDeclarationToBuffer(__pyx_v_self->_c_out, __pyx_v_c_version, __pyx_v_self->_c_encoding, __pyx_v_c_standalone);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":679
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":682
* c_standalone = 1 if standalone else 0
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_doctype != Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":680
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":683
* _writeDeclarationToBuffer(self._c_out, c_version, self._c_encoding, c_standalone)
* if doctype is not None:
* _writeDoctype(self._c_out, _xcstr(doctype)) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":681
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":684
* if doctype is not None:
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":683
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":686
* self._status = WRITER_DTD_WRITTEN
* else:
* self._status = WRITER_DECL_WRITTEN # <<<<<<<<<<<<<<
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":684
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":687
* else:
* self._status = WRITER_DECL_WRITTEN
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* def write_doctype(self, doctype):
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":686
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":689
* self._handle_error(self._c_out.error)
*
* def write_doctype(self, doctype): # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("write_doctype", 0);
__Pyx_INCREF(__pyx_v_doctype);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":691
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":694
* Writes the given doctype declaration verbatimly into the file.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!(__pyx_v_self->_c_out != NULL))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 691; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":692
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":695
* """
* assert self._c_out is not NULL
* if doctype is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_doctype == Py_None);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":693
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":696
* assert self._c_out is not NULL
* if doctype is None:
* return # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":694
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":697
* if doctype is None:
* return
* if self._status >= WRITER_DTD_WRITTEN: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_status >= __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":695
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":698
* return
* if self._status >= WRITER_DTD_WRITTEN:
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here") # <<<<<<<<<<<<<<
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype))
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_244), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_244), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":696
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":699
* if self._status >= WRITER_DTD_WRITTEN:
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
* doctype = _utf8(doctype) # <<<<<<<<<<<<<<
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN
*/
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_doctype)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_doctype)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_v_doctype);
__pyx_v_doctype = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":697
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":700
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here")
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype)) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeDoctype(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_doctype));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":698
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":701
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN # <<<<<<<<<<<<<<
*/
__pyx_v_self->_status = __pyx_e_4lxml_5etree_WRITER_DTD_WRITTEN;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":699
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":702
* _writeDoctype(self._c_out, _xcstr(doctype))
* self._status = WRITER_DTD_WRITTEN
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* def element(self, tag, attrib=None, nsmap=None, **_extra):
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
static PyObject **__pyx_pyargnames[] = {&__pyx_n_s__tag,&__pyx_n_s__attrib,&__pyx_n_s__nsmap,0};
PyObject* values[3] = {0,0,0};
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":701
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":704
* self._handle_error(self._c_out.error)
*
* def element(self, tag, attrib=None, nsmap=None, **_extra): # <<<<<<<<<<<<<<
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "element") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else {
switch (PyTuple_GET_SIZE(__pyx_args)) {
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.element", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannySetupContext("element", 0);
__Pyx_INCREF(__pyx_v_attrib);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":706
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":709
* Returns a context manager that writes an opening and closing tag.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!(__pyx_v_self->_c_out != NULL))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":707
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":710
* """
* assert self._c_out is not NULL
* attributes = [] # <<<<<<<<<<<<<<
* if attrib is not None:
* if isinstance(attrib, (dict, _Attrib)):
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 707; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_attributes = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":708
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":711
* assert self._c_out is not NULL
* attributes = []
* if attrib is not None: # <<<<<<<<<<<<<<
__pyx_t_2 = (__pyx_v_attrib != Py_None);
if (__pyx_t_2) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":709
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":712
* attributes = []
* if attrib is not None:
* if isinstance(attrib, (dict, _Attrib)): # <<<<<<<<<<<<<<
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":710
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":713
* if attrib is not None:
* if isinstance(attrib, (dict, _Attrib)):
* attrib = attrib.items() # <<<<<<<<<<<<<<
* for name, value in attrib:
* if name not in _extra:
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_attrib, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_attrib, __pyx_n_s__items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_v_attrib);
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":711
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":714
* if isinstance(attrib, (dict, _Attrib)):
* attrib = attrib.items()
* for name, value in attrib: # <<<<<<<<<<<<<<
__pyx_t_5 = __pyx_v_attrib; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
} else {
- __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_attrib); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_attrib); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
}
if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_1 = __pyx_t_7(__pyx_t_5);
if (unlikely(!__pyx_t_1)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_9);
#else
- __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_8);
index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
__Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L8_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L8_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_name);
__pyx_v_value = __pyx_t_9;
__pyx_t_9 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":712
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":715
* attrib = attrib.items()
* for name, value in attrib:
* if name not in _extra: # <<<<<<<<<<<<<<
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
*/
- __pyx_t_4 = (__Pyx_PyDict_Contains(__pyx_v_name, ((PyObject *)__pyx_v__extra), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = (__Pyx_PyDict_Contains(__pyx_v_name, ((PyObject *)__pyx_v__extra), Py_NE)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":713
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":716
* for name, value in attrib:
* if name not in _extra:
* ns, name = _getNsTag(name) # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
* if _extra:
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyTuple_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else if (1) {
- __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else
{
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_9);
index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L10_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L11_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L11_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_name = __pyx_t_8;
__pyx_t_8 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":714
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":717
* if name not in _extra:
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value))) # <<<<<<<<<<<<<<
* if _extra:
* for name, value in _extra.iteritems():
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_12 = PyList_Append(__pyx_v_attributes, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 714; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_12 = PyList_Append(__pyx_v_attributes, ((PyObject *)__pyx_t_8)); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
goto __pyx_L9;
}
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":715
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":718
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
* if _extra: # <<<<<<<<<<<<<<
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name)
*/
- __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v__extra)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 715; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(((PyObject *)__pyx_v__extra)); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":716
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":719
* attributes.append((ns, name, _utf8(value)))
* if _extra:
* for name, value in _extra.iteritems(): # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
*/
__pyx_t_6 = 0;
- __pyx_t_8 = __Pyx_dict_iterator(((PyObject *)__pyx_v__extra), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_13), (&__pyx_t_14)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_dict_iterator(((PyObject *)__pyx_v__extra), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_13), (&__pyx_t_14)); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_XDECREF(__pyx_t_5);
__pyx_t_5 = __pyx_t_8;
while (1) {
__pyx_t_15 = __Pyx_dict_iter_next(__pyx_t_5, __pyx_t_13, &__pyx_t_6, &__pyx_t_8, &__pyx_t_1, NULL, __pyx_t_14);
if (unlikely(__pyx_t_15 == 0)) break;
- if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 716; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(__pyx_t_15 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_v_name);
__pyx_v_value = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":717
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":720
* if _extra:
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name) # <<<<<<<<<<<<<<
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {}
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_name)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (likely(PyTuple_CheckExact(__pyx_t_1))) {
PyObject* sequence = __pyx_t_1;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
__pyx_t_8 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_8);
__Pyx_INCREF(__pyx_t_9);
#else
- __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
#endif
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
} else if (1) {
- __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else
{
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_8);
index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L15_unpacking_failed;
__Pyx_GOTREF(__pyx_t_9);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L16_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 717; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L16_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_name = __pyx_t_9;
__pyx_t_9 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":718
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":721
* for name, value in _extra.iteritems():
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value))) # <<<<<<<<<<<<<<
* reversed_nsmap = {}
* if nsmap:
*/
- __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_value)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_12 = PyList_Append(__pyx_v_attributes, ((PyObject *)__pyx_t_9)); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 718; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_12 = PyList_Append(__pyx_v_attributes, ((PyObject *)__pyx_t_9)); if (unlikely(__pyx_t_12 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_9)); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L12:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":719
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":722
* ns, name = _getNsTag(name)
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {} # <<<<<<<<<<<<<<
* if nsmap:
* for prefix, ns in nsmap.items():
*/
- __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
__pyx_v_reversed_nsmap = ((PyObject*)__pyx_t_5);
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":720
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":723
* attributes.append((ns, name, _utf8(value)))
* reversed_nsmap = {}
* if nsmap: # <<<<<<<<<<<<<<
* for prefix, ns in nsmap.items():
* if prefix is not None:
*/
- __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_nsmap); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":721
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":724
* reversed_nsmap = {}
* if nsmap:
* for prefix, ns in nsmap.items(): # <<<<<<<<<<<<<<
* if prefix is not None:
* prefix = _utf8(prefix)
*/
- __pyx_t_5 = PyObject_GetAttr(__pyx_v_nsmap, __pyx_n_s__items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_GetAttr(__pyx_v_nsmap, __pyx_n_s__items); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_9 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (PyList_CheckExact(__pyx_t_9) || PyTuple_CheckExact(__pyx_t_9)) {
__pyx_t_5 = __pyx_t_9; __Pyx_INCREF(__pyx_t_5); __pyx_t_13 = 0;
__pyx_t_7 = NULL;
} else {
- __pyx_t_13 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_13 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
}
if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
if (__pyx_t_13 >= PyList_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_9 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
if (__pyx_t_13 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_13); __Pyx_INCREF(__pyx_t_9); __pyx_t_13++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(__pyx_t_5, __pyx_t_13); __pyx_t_13++; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
} else {
__pyx_t_9 = __pyx_t_7(__pyx_t_5);
if (unlikely(!__pyx_t_9)) {
if (PyErr_Occurred()) {
if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) PyErr_Clear();
- else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
break;
}
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_1);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_10 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_10 = PyObject_GetIter(__pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_10);
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
__Pyx_GOTREF(__pyx_t_1);
index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L20_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
goto __pyx_L21_unpacking_done;
__Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L21_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_prefix);
__pyx_v_ns = __pyx_t_8;
__pyx_t_8 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":722
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":725
* if nsmap:
* for prefix, ns in nsmap.items():
* if prefix is not None: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_v_prefix != Py_None);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":723
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":726
* for prefix, ns in nsmap.items():
* if prefix is not None:
* prefix = _utf8(prefix) # <<<<<<<<<<<<<<
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix
*/
- __pyx_t_9 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_prefix)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 723; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_prefix)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_v_prefix);
__pyx_v_prefix = __pyx_t_9;
__pyx_t_9 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":724
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":727
* if prefix is not None:
* prefix = _utf8(prefix)
* _prefixValidOrRaise(prefix) # <<<<<<<<<<<<<<
* reversed_nsmap[_utf8(ns)] = prefix
* ns, name = _getNsTag(tag)
*/
- __pyx_t_14 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 724; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_14 = __pyx_f_4lxml_5etree__prefixValidOrRaise(__pyx_v_prefix); if (unlikely(__pyx_t_14 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L22;
}
__pyx_L22:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":725
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":728
* prefix = _utf8(prefix)
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix # <<<<<<<<<<<<<<
* ns, name = _getNsTag(tag)
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap))
*/
- __pyx_t_9 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_ns)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_ns)); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
- if (PyDict_SetItem(((PyObject *)__pyx_v_reversed_nsmap), __pyx_t_9, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 725; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(((PyObject *)__pyx_v_reversed_nsmap), __pyx_t_9, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
__pyx_L17:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":726
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":729
* _prefixValidOrRaise(prefix)
* reversed_nsmap[_utf8(ns)] = prefix
* ns, name = _getNsTag(tag) # <<<<<<<<<<<<<<
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap))
*
*/
- __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
if (likely(PyTuple_CheckExact(__pyx_t_5))) {
PyObject* sequence = __pyx_t_5;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
__pyx_t_9 = PyTuple_GET_ITEM(sequence, 0);
__Pyx_INCREF(__pyx_t_9);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
- __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else if (1) {
- __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __Pyx_RaiseNoneNotIterableError(); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
} else
{
Py_ssize_t index = -1;
- __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_11 = Py_TYPE(__pyx_t_1)->tp_iternext;
__Pyx_GOTREF(__pyx_t_9);
index = 1; __pyx_t_8 = __pyx_t_11(__pyx_t_1); if (unlikely(!__pyx_t_8)) goto __pyx_L23_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_1), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_11 = NULL;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
goto __pyx_L24_unpacking_done;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_11 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L24_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_name = __pyx_t_8;
__pyx_t_8 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":727
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":730
* reversed_nsmap[_utf8(ns)] = prefix
* ns, name = _getNsTag(tag)
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap)) # <<<<<<<<<<<<<<
* cdef _write_qname(self, bytes name, bytes prefix):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ns);
__Pyx_INCREF(((PyObject *)__pyx_v_reversed_nsmap));
PyTuple_SET_ITEM(__pyx_t_5, 3, ((PyObject *)__pyx_v_reversed_nsmap));
__Pyx_GIVEREF(((PyObject *)__pyx_v_reversed_nsmap));
- __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_INCREF(((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_v_self));
PyTuple_SET_ITEM(__pyx_t_8, 1, ((PyObject *)__pyx_t_5));
__Pyx_GIVEREF(((PyObject *)__pyx_t_5));
__pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FileWriterElement)), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__FileWriterElement)), ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
__pyx_r = __pyx_t_5;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":729
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":732
* return _FileWriterElement(self, (ns, name, attributes, reversed_nsmap))
*
* cdef _write_qname(self, bytes name, bytes prefix): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_qname", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":730
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":733
*
* cdef _write_qname(self, bytes name, bytes prefix):
* if prefix is not None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_prefix != ((PyObject*)Py_None));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":731
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":734
* cdef _write_qname(self, bytes name, bytes prefix):
* if prefix is not None:
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_prefix) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_prefix)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_prefix)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
xmlOutputBufferWrite(__pyx_v_self->_c_out, __pyx_t_2, PyBytes_AS_STRING(((PyObject *)__pyx_v_prefix)));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":732
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":735
* if prefix is not None:
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix))
* tree.xmlOutputBufferWrite(self._c_out, 1, ':') # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":733
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":736
* tree.xmlOutputBufferWrite(self._c_out, len(prefix), _cstr(prefix))
* tree.xmlOutputBufferWrite(self._c_out, 1, ':')
* tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_name) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_name)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 733; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyBytes_GET_SIZE(((PyObject *)__pyx_v_name)); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
xmlOutputBufferWrite(__pyx_v_self->_c_out, __pyx_t_2, PyBytes_AS_STRING(((PyObject *)__pyx_v_name)));
__pyx_r = Py_None; __Pyx_INCREF(Py_None);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":735
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":738
* tree.xmlOutputBufferWrite(self._c_out, len(name), _cstr(name))
*
* cdef _write_start_element(self, element_config): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_start_element", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":736
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":739
*
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":737
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":740
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_247), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_247), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":738
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":741
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
* ns, name, attributes, nsmap = element_config # <<<<<<<<<<<<<<
if (unlikely(size != 4)) {
if (size > 4) __Pyx_RaiseTooManyValuesError(4);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
Py_ssize_t i;
PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_4,&__pyx_t_5};
for (i=0; i < 4; i++) {
- PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ PyObject* item = PySequence_ITEM(sequence, i); if (unlikely(!item)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(item);
*(temps[i]) = item;
}
{
Py_ssize_t index = -1;
PyObject** temps[4] = {&__pyx_t_3,&__pyx_t_2,&__pyx_t_4,&__pyx_t_5};
- __pyx_t_6 = PyObject_GetIter(__pyx_v_element_config); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_GetIter(__pyx_v_element_config); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
for (index=0; index < 4; index++) {
__Pyx_GOTREF(item);
*(temps[index]) = item;
}
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 4) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
goto __pyx_L5_unpacking_done;
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 738; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L5_unpacking_done:;
}
__pyx_v_ns = __pyx_t_3;
__pyx_v_nsmap = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":739
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":742
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap) # <<<<<<<<<<<<<<
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
*/
- if (!(likely(PyDict_CheckExact(__pyx_v_nsmap))||((__pyx_v_nsmap) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_nsmap)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_nsmap)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyDict_CheckExact(__pyx_v_nsmap))||((__pyx_v_nsmap) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_nsmap)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_nsmap)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
PyObject* sequence = __pyx_t_5;
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_4);
__Pyx_INCREF(__pyx_t_2);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext;
__Pyx_GOTREF(__pyx_t_4);
index = 1; __pyx_t_2 = __pyx_t_7(__pyx_t_3); if (unlikely(!__pyx_t_2)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_3), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_7 = NULL;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_7 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L7_unpacking_done:;
}
__pyx_v_flat_namespace_map = __pyx_t_4;
__pyx_v_new_namespaces = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":740
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":743
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
* self._write_qname(name, prefix)
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_ns)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_ns)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_v_prefix = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":741
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":744
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k_248);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":742
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":745
* prefix = self._find_prefix(ns, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '<')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
* self._write_attributes_and_namespaces(
* attributes, flat_namespace_map, new_namespaces)
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 742; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 745; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":744
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":747
* self._write_qname(name, prefix)
* self._write_attributes_and_namespaces(
* attributes, flat_namespace_map, new_namespaces) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
* self._handle_error(self._c_out.error)
*/
- if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_and_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_attributes), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyList_CheckExact(__pyx_v_attributes))||((__pyx_v_attributes) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_attributes)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyDict_CheckExact(__pyx_v_flat_namespace_map))||((__pyx_v_flat_namespace_map) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected dict, got %.200s", Py_TYPE(__pyx_v_flat_namespace_map)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyList_CheckExact(__pyx_v_new_namespaces))||((__pyx_v_new_namespaces) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected list, got %.200s", Py_TYPE(__pyx_v_new_namespaces)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_and_namespaces(__pyx_v_self, ((PyObject*)__pyx_v_attributes), ((PyObject*)__pyx_v_flat_namespace_map), ((PyObject*)__pyx_v_new_namespaces)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":745
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":748
* self._write_attributes_and_namespaces(
* attributes, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '>') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k_249);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":746
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":749
* attributes, flat_namespace_map, new_namespaces)
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map))
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 746; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":748
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":751
* self._handle_error(self._c_out.error)
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_self->_element_stack) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_ns);
__Pyx_INCREF(__pyx_v_flat_namespace_map);
PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_flat_namespace_map);
__Pyx_GIVEREF(__pyx_v_flat_namespace_map);
- __pyx_t_8 = PyList_Append(__pyx_v_self->_element_stack, ((PyObject *)__pyx_t_5)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyList_Append(__pyx_v_self->_element_stack, ((PyObject *)__pyx_t_5)); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 751; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":749
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":752
*
* self._element_stack.append((ns, name, prefix, flat_namespace_map))
* self._status = WRITER_IN_ELEMENT # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":751
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":754
* self._status = WRITER_IN_ELEMENT
*
* cdef _write_attributes_and_namespaces(self, list attributes, # <<<<<<<<<<<<<<
__Pyx_RefNannySetupContext("_write_attributes_and_namespaces", 0);
__Pyx_INCREF(__pyx_v_attributes);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":754
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":757
* dict flat_namespace_map,
* list new_namespaces):
* if attributes: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_attributes) != Py_None) && (PyList_GET_SIZE(((PyObject *)__pyx_v_attributes)) != 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":756
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":759
* if attributes:
* # _find_prefix() may append to new_namespaces => build them first
* attributes = [ # <<<<<<<<<<<<<<
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ]
*/
- __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":758
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":761
* attributes = [
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ] # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_attributes) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_3 = ((PyObject *)__pyx_v_attributes); __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
for (;;) {
if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
PyObject* sequence = __pyx_t_5;
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_7);
__Pyx_INCREF(__pyx_t_8);
#else
- __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
- __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_9);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
__Pyx_GOTREF(__pyx_t_7);
index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
__Pyx_GOTREF(__pyx_t_8);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_10 = NULL;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
goto __pyx_L7_unpacking_done;
__Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
__pyx_t_10 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L7_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_value = __pyx_t_8;
__pyx_t_8 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":757
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":760
* # _find_prefix() may append to new_namespaces => build them first
* attributes = [
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value) # <<<<<<<<<<<<<<
* for ns, name, value in attributes ]
* if new_namespaces:
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_ns)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), __pyx_v_flat_namespace_map, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_ns))||((__pyx_v_ns) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_ns)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__find_prefix(__pyx_v_self, ((PyObject*)__pyx_v_ns), __pyx_v_flat_namespace_map, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 757; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
__Pyx_GIVEREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_v_value);
__Pyx_GIVEREF(__pyx_v_value);
__pyx_t_5 = 0;
- if (unlikely(__Pyx_PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(__Pyx_PyList_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 759; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
}
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":759
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":762
* (self._find_prefix(ns, flat_namespace_map, new_namespaces), name, value)
* for ns, name, value in attributes ]
* if new_namespaces: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_new_namespaces) != Py_None) && (PyList_GET_SIZE(((PyObject *)__pyx_v_new_namespaces)) != 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":760
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":763
* for ns, name, value in attributes ]
* if new_namespaces:
* new_namespaces.sort() # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_new_namespaces) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "sort");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_11 = PyList_Sort(((PyObject *)__pyx_v_new_namespaces)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_11 = PyList_Sort(((PyObject *)__pyx_v_new_namespaces)); if (unlikely(__pyx_t_11 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":761
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":764
* if new_namespaces:
* new_namespaces.sort()
* self._write_attributes_list(new_namespaces) # <<<<<<<<<<<<<<
* if attributes:
* self._write_attributes_list(attributes)
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_new_namespaces); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L8;
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":762
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":765
* new_namespaces.sort()
* self._write_attributes_list(new_namespaces)
* if attributes: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_attributes) != Py_None) && (PyList_GET_SIZE(((PyObject *)__pyx_v_attributes)) != 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":763
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":766
* self._write_attributes_list(new_namespaces)
* if attributes:
* self._write_attributes_list(attributes) # <<<<<<<<<<<<<<
*
* cdef _write_attributes_list(self, list attributes):
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_attributes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 763; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_attributes_list(__pyx_v_self, __pyx_v_attributes); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L9;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":765
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":768
* self._write_attributes_list(attributes)
*
* cdef _write_attributes_list(self, list attributes): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_attributes_list", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":766
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":769
*
* cdef _write_attributes_list(self, list attributes):
* for prefix, name, value in attributes: # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_attributes) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_t_1 = ((PyObject *)__pyx_v_attributes); __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
for (;;) {
if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
PyObject* sequence = __pyx_t_3;
if (unlikely(size != 3)) {
if (size > 3) __Pyx_RaiseTooManyValuesError(3);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_5);
__Pyx_INCREF(__pyx_t_6);
#else
- __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
#endif
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_5);
index = 2; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_6);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 3) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 766; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L6_unpacking_done:;
}
__Pyx_XDECREF(__pyx_v_prefix);
__pyx_v_value = __pyx_t_6;
__pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":767
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":770
* cdef _write_attributes_list(self, list attributes):
* for prefix, name, value in attributes:
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k_13);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":768
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":771
* for prefix, name, value in attributes:
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 2, '="')
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(value), NULL)
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 771; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":769
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":772
* tree.xmlOutputBufferWrite(self._c_out, 1, ' ')
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 2, '="') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k_250);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":770
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":773
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 2, '="')
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(value), NULL) # <<<<<<<<<<<<<<
*/
xmlOutputBufferWriteEscape(__pyx_v_self->_c_out, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value), NULL);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":771
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":774
* tree.xmlOutputBufferWrite(self._c_out, 2, '="')
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(value), NULL)
* tree.xmlOutputBufferWrite(self._c_out, 1, '"') # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":773
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":776
* tree.xmlOutputBufferWrite(self._c_out, 1, '"')
*
* cdef _write_end_element(self, element_config): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_write_end_element", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":774
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":777
*
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":775
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":778
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager")
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_252), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_252), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":776
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":779
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]: # <<<<<<<<<<<<<<
if (!__pyx_t_4) {
if (unlikely(((PyObject *)__pyx_v_self->_element_stack) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_3) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_t_3, 0, 2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PySequence_GetSlice(__pyx_t_3, 0, 2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_element_config, 0, 2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PySequence_GetSlice(__pyx_v_element_config, 0, 2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_6 = __pyx_t_1;
} else {
}
if (__pyx_t_6) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":777
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":780
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager") # <<<<<<<<<<<<<<
*
* name, prefix = self._element_stack.pop()[1:3]
*/
- __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_254), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_254), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":779
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":782
* raise LxmlSyntaxError("inconsistent exit action in context manager")
*
* name, prefix = self._element_stack.pop()[1:3] # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix)
*/
- __pyx_t_3 = __Pyx_PyObject_Pop(((PyObject *)__pyx_v_self->_element_stack)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_Pop(((PyObject *)__pyx_v_self->_element_stack)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = __Pyx_PySequence_GetSlice(__pyx_t_3, 1, 3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PySequence_GetSlice(__pyx_t_3, 1, 3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
if (unlikely(size != 2)) {
if (size > 2) __Pyx_RaiseTooManyValuesError(2);
else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#if CYTHON_COMPILING_IN_CPYTHON
if (likely(PyTuple_CheckExact(sequence))) {
__Pyx_INCREF(__pyx_t_3);
__Pyx_INCREF(__pyx_t_2);
#else
- __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
#endif
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
} else
{
Py_ssize_t index = -1;
- __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
__Pyx_GOTREF(__pyx_t_3);
index = 1; __pyx_t_2 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_2)) goto __pyx_L5_unpacking_failed;
__Pyx_GOTREF(__pyx_t_2);
- if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_t_8 = NULL;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
goto __pyx_L6_unpacking_done;
__Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
__pyx_t_8 = NULL;
if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_L6_unpacking_done:;
}
__pyx_v_name = __pyx_t_3;
__pyx_v_prefix = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":780
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":783
*
* name, prefix = self._element_stack.pop()[1:3]
* tree.xmlOutputBufferWrite(self._c_out, 2, '</') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 2, __pyx_k_255);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":781
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":784
* name, prefix = self._element_stack.pop()[1:3]
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*
*/
- if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (!(likely(PyBytes_CheckExact(__pyx_v_prefix))||((__pyx_v_prefix) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected bytes, got %.200s", Py_TYPE(__pyx_v_prefix)->tp_name), 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname(__pyx_v_self, ((PyObject*)__pyx_v_name), ((PyObject*)__pyx_v_prefix)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":782
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":785
* tree.xmlOutputBufferWrite(self._c_out, 2, '</')
* self._write_qname(name, prefix)
* tree.xmlOutputBufferWrite(self._c_out, 1, '>') # <<<<<<<<<<<<<<
*/
xmlOutputBufferWrite(__pyx_v_self->_c_out, 1, __pyx_k_249);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":784
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":787
* tree.xmlOutputBufferWrite(self._c_out, 1, '>')
*
* if not self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_4 = (!__pyx_t_6);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":785
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":788
*
* if not self._element_stack:
* self._status = WRITER_FINISHED # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":786
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":789
* if not self._element_stack:
* self._status = WRITER_FINISHED
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":788
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":791
* self._handle_error(self._c_out.error)
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_find_prefix", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":789
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":792
*
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
* if href is None: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_href == ((PyObject*)Py_None));
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":790
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":793
* cdef _find_prefix(self, bytes href, dict flat_namespaces_map, list new_namespaces):
* if href is None:
* return None # <<<<<<<<<<<<<<
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":791
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":794
* if href is None:
* return None
* if href in flat_namespaces_map: # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_flat_namespaces_map) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_1 = (__Pyx_PyDict_Contains(((PyObject *)__pyx_v_href), ((PyObject *)__pyx_v_flat_namespaces_map), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = (__Pyx_PyDict_Contains(((PyObject *)__pyx_v_href), ((PyObject *)__pyx_v_flat_namespaces_map), Py_EQ)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":792
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":795
* return None
* if href in flat_namespaces_map:
* return flat_namespaces_map[href] # <<<<<<<<<<<<<<
__Pyx_XDECREF(__pyx_r);
if (unlikely(((PyObject *)__pyx_v_flat_namespaces_map) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_flat_namespaces_map), ((PyObject *)__pyx_v_href)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 792; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_PyDict_GetItem(((PyObject *)__pyx_v_flat_namespaces_map), ((PyObject *)__pyx_v_href)); if (!__pyx_t_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":794
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":797
* return flat_namespaces_map[href]
* # need to create a new prefix
* prefixes = flat_namespaces_map.values() # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_flat_namespaces_map) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "values");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_2 = PyDict_Values(__pyx_v_flat_namespaces_map); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyDict_Values(__pyx_v_flat_namespaces_map); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_v_prefixes = __pyx_t_2;
__pyx_t_2 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":795
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":798
* # need to create a new prefix
* prefixes = flat_namespaces_map.values()
* i = 0 # <<<<<<<<<<<<<<
__Pyx_INCREF(__pyx_int_0);
__pyx_v_i = __pyx_int_0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":796
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":799
* prefixes = flat_namespaces_map.values()
* i = 0
* while True: # <<<<<<<<<<<<<<
while (1) {
if (!1) break;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":797
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":800
* i = 0
* while True:
* prefix = _utf8('ns%d' % i) # <<<<<<<<<<<<<<
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href))
*/
- __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_56), __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_56), __pyx_v_i); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_2));
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(((PyObject *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 797; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(((PyObject *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0;
__Pyx_XDECREF(((PyObject *)__pyx_v_prefix));
__pyx_v_prefix = ((PyObject*)__pyx_t_3);
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":798
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":801
* while True:
* prefix = _utf8('ns%d' % i)
* if prefix not in prefixes: # <<<<<<<<<<<<<<
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix
*/
- __pyx_t_1 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_prefix), __pyx_v_prefixes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = (__Pyx_PySequence_Contains(((PyObject *)__pyx_v_prefix), __pyx_v_prefixes, Py_NE)); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":799
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":802
* prefix = _utf8('ns%d' % i)
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href)) # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_new_namespaces) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "append");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(((PyObject *)__pyx_n_b__xmlns));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_n_b__xmlns));
__Pyx_INCREF(((PyObject *)__pyx_v_href));
PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_v_href));
__Pyx_GIVEREF(((PyObject *)__pyx_v_href));
- __pyx_t_4 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 799; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_3)); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":800
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":803
* if prefix not in prefixes:
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix # <<<<<<<<<<<<<<
*/
if (unlikely(((PyObject *)__pyx_v_flat_namespaces_map) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), ((PyObject *)__pyx_v_href), ((PyObject *)__pyx_v_prefix)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), ((PyObject *)__pyx_v_href), ((PyObject *)__pyx_v_prefix)) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":801
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":804
* new_namespaces.append((b'xmlns', prefix, href))
* flat_namespaces_map[href] = prefix
* return prefix # <<<<<<<<<<<<<<
}
__pyx_L7:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":802
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":805
* flat_namespaces_map[href] = prefix
* return prefix
* i += 1 # <<<<<<<<<<<<<<
*
* cdef _collect_namespaces(self, dict nsmap):
*/
- __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 802; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_i, __pyx_int_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_v_i);
__pyx_v_i = __pyx_t_3;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":804
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":807
* i += 1
*
* cdef _collect_namespaces(self, dict nsmap): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_collect_namespaces", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":805
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":808
*
* cdef _collect_namespaces(self, dict nsmap):
* new_namespaces = [] # <<<<<<<<<<<<<<
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems():
*/
- __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_v_new_namespaces = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":806
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":809
* cdef _collect_namespaces(self, dict nsmap):
* new_namespaces = []
* flat_namespaces_map = {} # <<<<<<<<<<<<<<
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix
*/
- __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_1));
__pyx_v_flat_namespaces_map = ((PyObject*)__pyx_t_1);
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":807
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":810
* new_namespaces = []
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems(): # <<<<<<<<<<<<<<
__pyx_t_2 = 0;
if (unlikely(((PyObject *)__pyx_v_nsmap) == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_5 = __Pyx_dict_iterator(((PyObject *)__pyx_v_nsmap), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_dict_iterator(((PyObject *)__pyx_v_nsmap), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_3), (&__pyx_t_4)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_t_1);
__pyx_t_1 = __pyx_t_5;
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_3, &__pyx_t_2, &__pyx_t_5, &__pyx_t_6, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_GOTREF(__pyx_t_6);
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_prefix = __pyx_t_6;
__pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":808
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":811
* flat_namespaces_map = {}
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix # <<<<<<<<<<<<<<
* if prefix is None:
* new_namespaces.append((None, b'xmlns', ns))
*/
- if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":809
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":812
* for ns, prefix in nsmap.iteritems():
* flat_namespaces_map[ns] = prefix
* if prefix is None: # <<<<<<<<<<<<<<
__pyx_t_8 = (__pyx_v_prefix == Py_None);
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":810
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":813
* flat_namespaces_map[ns] = prefix
* if prefix is None:
* new_namespaces.append((None, b'xmlns', ns)) # <<<<<<<<<<<<<<
* else:
* new_namespaces.append((b'xmlns', prefix, ns))
*/
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(Py_None);
PyTuple_SET_ITEM(__pyx_t_6, 0, Py_None);
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
- __pyx_t_9 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_6)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_6)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
goto __pyx_L5;
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":812
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":815
* new_namespaces.append((None, b'xmlns', ns))
* else:
* new_namespaces.append((b'xmlns', prefix, ns)) # <<<<<<<<<<<<<<
* # merge in flat namespace map of parent
* if self._element_stack:
*/
- __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_INCREF(((PyObject *)__pyx_n_b__xmlns));
PyTuple_SET_ITEM(__pyx_t_6, 0, ((PyObject *)__pyx_n_b__xmlns));
__Pyx_INCREF(__pyx_v_ns);
PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_v_ns);
__Pyx_GIVEREF(__pyx_v_ns);
- __pyx_t_9 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_6)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_9 = PyList_Append(__pyx_v_new_namespaces, ((PyObject *)__pyx_t_6)); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
}
__pyx_L5:;
}
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":814
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":817
* new_namespaces.append((b'xmlns', prefix, ns))
* # merge in flat namespace map of parent
* if self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_8 = (((PyObject *)__pyx_v_self->_element_stack) != Py_None) && (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) != 0);
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":815
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":818
* # merge in flat namespace map of parent
* if self._element_stack:
* for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems(): # <<<<<<<<<<<<<<
__pyx_t_3 = 0;
if (unlikely(((PyObject *)__pyx_v_self->_element_stack) == Py_None)) {
PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_6 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_GetItemInt_List(((PyObject *)__pyx_v_self->_element_stack), -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_6) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, -1, sizeof(long), PyInt_FromLong); if (!__pyx_t_5) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
if (unlikely(__pyx_t_5 == Py_None)) {
PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%s'", "iteritems");
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
- __pyx_t_6 = __Pyx_dict_iterator(((PyObject *)((PyObject*)__pyx_t_5)), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_2), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_dict_iterator(((PyObject *)((PyObject*)__pyx_t_5)), 1, ((PyObject *)__pyx_n_s__iteritems), (&__pyx_t_2), (&__pyx_t_4)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_XDECREF(__pyx_t_1);
while (1) {
__pyx_t_7 = __Pyx_dict_iter_next(__pyx_t_1, __pyx_t_2, &__pyx_t_3, &__pyx_t_6, &__pyx_t_5, NULL, __pyx_t_4);
if (unlikely(__pyx_t_7 == 0)) break;
- if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 815; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__Pyx_GOTREF(__pyx_t_5);
__Pyx_XDECREF(__pyx_v_ns);
__pyx_v_prefix = __pyx_t_5;
__pyx_t_5 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":816
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":819
* if self._element_stack:
* for ns, prefix in (<dict>self._element_stack[-1][-1]).iteritems():
* if flat_namespaces_map.get(ns) is None: # <<<<<<<<<<<<<<
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix
*/
- __pyx_t_5 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_PyDict_GetItemDefault(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__pyx_t_8 = (__pyx_t_5 == Py_None);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
if (__pyx_t_8) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":818
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":821
* if flat_namespaces_map.get(ns) is None:
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix # <<<<<<<<<<<<<<
* return flat_namespaces_map, new_namespaces
*
*/
- if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItem(((PyObject *)__pyx_v_flat_namespaces_map), __pyx_v_ns, __pyx_v_prefix) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L9;
}
__pyx_L9:;
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":819
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":822
* # unknown or empty prefix => prefer a 'real' prefix
* flat_namespaces_map[ns] = prefix
* return flat_namespaces_map, new_namespaces # <<<<<<<<<<<<<<
* def write(self, *args, bint with_tail=True, bint pretty_print=False):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 822; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(((PyObject *)__pyx_v_flat_namespaces_map));
PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_flat_namespaces_map));
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "write") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) < 0) {
goto __pyx_L5_argtuple_error;
} else {
}
if (values[0]) {
- __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":821
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":824
* return flat_namespaces_map, new_namespaces
*
* def write(self, *args, bint with_tail=True, bint pretty_print=False): # <<<<<<<<<<<<<<
__pyx_v_with_tail = ((int)1);
}
if (values[1]) {
- __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
} else {
__pyx_v_pretty_print = ((int)0);
}
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("write", 0, 0, 0, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
__Pyx_AddTraceback("lxml.etree._IncrementalFileWriter.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("write", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":826
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":829
* Write subtrees or strings into the file.
* """
* assert self._c_out is not NULL # <<<<<<<<<<<<<<
#ifndef CYTHON_WITHOUT_ASSERTIONS
if (unlikely(!(__pyx_v_self->_c_out != NULL))) {
PyErr_SetNone(PyExc_AssertionError);
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":827
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":830
* """
* assert self._c_out is not NULL
* for content in args: # <<<<<<<<<<<<<<
for (;;) {
if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
#if CYTHON_COMPILING_IN_CPYTHON
- __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
__Pyx_XDECREF(__pyx_v_content);
__pyx_v_content = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":828
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":831
* assert self._c_out is not NULL
* for content in args:
* if _isString(content): # <<<<<<<<<<<<<<
__pyx_t_4 = _isString(__pyx_v_content);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":829
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":832
* for content in args:
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_4 = (__pyx_v_self->_status != __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":830
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":833
* if _isString(content):
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip(): # <<<<<<<<<<<<<<
*/
__pyx_t_4 = (__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (!__pyx_t_4) {
- __pyx_t_3 = PyObject_GetAttr(__pyx_v_content, __pyx_n_s__strip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetAttr(__pyx_v_content, __pyx_n_s__strip); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__pyx_t_7 = __pyx_t_6;
} else {
}
if (__pyx_t_7) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":831
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":834
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip():
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* content = _utf8(content)
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
*/
- __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_256), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_5, ((PyObject *)__pyx_k_tuple_256), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L7;
}
__pyx_L7:;
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":832
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":835
* if self._status > WRITER_IN_ELEMENT or content.strip():
* raise LxmlSyntaxError("not in an element")
* content = _utf8(content) # <<<<<<<<<<<<<<
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
* elif iselement(content):
*/
- __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_content)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__utf8(__pyx_v_content)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 835; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_v_content);
__pyx_v_content = __pyx_t_3;
__pyx_t_3 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":833
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":836
* raise LxmlSyntaxError("not in an element")
* content = _utf8(content)
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL) # <<<<<<<<<<<<<<
goto __pyx_L5;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":834
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":837
* content = _utf8(content)
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
* elif iselement(content): # <<<<<<<<<<<<<<
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document")
*/
- __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__iselement); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__iselement); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_INCREF(__pyx_v_content);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_content);
__Pyx_GIVEREF(__pyx_v_content);
- __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
- __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
if (__pyx_t_7) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":835
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":838
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_7 = (__pyx_v_self->_status > __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (__pyx_t_7) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":836
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":839
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
* self._c_encoding, NULL, OUTPUT_METHOD_XML,
*/
- __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
- __pyx_t_5 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_257), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_8, ((PyObject *)__pyx_k_tuple_257), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L8;
}
__pyx_L8:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":839
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":842
* _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
* self._c_encoding, NULL, OUTPUT_METHOD_XML,
* False, False, pretty_print, with_tail, False) # <<<<<<<<<<<<<<
*/
__pyx_f_4lxml_5etree__writeNodeToBuffer(__pyx_v_self->_c_out, ((struct LxmlElement *)__pyx_v_content)->_c_node, __pyx_v_self->_c_encoding, NULL, __pyx_e_4lxml_5etree_OUTPUT_METHOD_XML, 0, 0, __pyx_v_pretty_print, __pyx_v_with_tail, 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":840
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":843
* self._c_encoding, NULL, OUTPUT_METHOD_XML,
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE: # <<<<<<<<<<<<<<
__pyx_t_7 = (((struct LxmlElement *)__pyx_v_content)->_c_node->type == XML_ELEMENT_NODE);
if (__pyx_t_7) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":841
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":844
* False, False, pretty_print, with_tail, False)
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE:
* if not self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_4 = (!__pyx_t_7);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":842
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":845
* if (<_Element>content)._c_node.type == tree.XML_ELEMENT_NODE:
* if not self._element_stack:
* self._status = WRITER_FINISHED # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":844
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":847
* self._status = WRITER_FINISHED
* else:
* raise TypeError("got invalid input value of type %s, expected string or Element" % type(content)) # <<<<<<<<<<<<<<
* self._handle_error(self._c_out.error)
*
*/
- __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_258), ((PyObject *)Py_TYPE(__pyx_v_content))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyNumber_Remainder(((PyObject *)__pyx_kp_s_258), ((PyObject *)Py_TYPE(__pyx_v_content))); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_5));
- __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_8);
PyTuple_SET_ITEM(__pyx_t_8, 0, ((PyObject *)__pyx_t_5));
__Pyx_GIVEREF(((PyObject *)__pyx_t_5));
__pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_builtin_TypeError, ((PyObject *)__pyx_t_8), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_8)); __pyx_t_8 = 0;
__Pyx_Raise(__pyx_t_5, 0, 0, 0);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 847; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
__pyx_L5:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":845
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":848
* else:
* raise TypeError("got invalid input value of type %s, expected string or Element" % type(content))
* self._handle_error(self._c_out.error) # <<<<<<<<<<<<<<
*
* cdef _close(self, bint raise_on_error):
*/
- __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 845; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_self->_c_out->error); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
}
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":847
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":850
* self._handle_error(self._c_out.error)
*
* cdef _close(self, bint raise_on_error): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_close", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":848
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":851
*
* cdef _close(self, bint raise_on_error):
* if raise_on_error: # <<<<<<<<<<<<<<
*/
if (__pyx_v_raise_on_error) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":849
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":852
* cdef _close(self, bint raise_on_error):
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_self->_status < __pyx_e_4lxml_5etree_WRITER_IN_ELEMENT);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":850
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":853
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written") # <<<<<<<<<<<<<<
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close")
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_260), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_k_tuple_260), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_Raise(__pyx_t_3, 0, 0, 0);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L4;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":851
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":854
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written")
* if self._element_stack: # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_self->_element_stack) != Py_None) && (PyList_GET_SIZE(((PyObject *)__pyx_v_self->_element_stack)) != 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":852
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":855
* raise LxmlSyntaxError("no content written")
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close") # <<<<<<<<<<<<<<
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK:
*/
- __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlSyntaxError); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_262), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_3, ((PyObject *)__pyx_k_tuple_262), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__Pyx_Raise(__pyx_t_2, 0, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[6]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L5;
}
__pyx_L5:;
}
__pyx_L3:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":853
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":856
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close")
* error_result = self._c_out.error # <<<<<<<<<<<<<<
__pyx_t_4 = __pyx_v_self->_c_out->error;
__pyx_v_error_result = __pyx_t_4;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":854
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":857
* raise LxmlSyntaxError("pending open tags on close")
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_error_result == XML_ERR_OK);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":855
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":858
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
*/
__pyx_v_error_result = xmlOutputBufferClose(__pyx_v_self->_c_out);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":856
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":859
* if error_result == xmlerror.XML_ERR_OK:
* error_result = tree.xmlOutputBufferClose(self._c_out)
* if error_result > 0: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_error_result > 0);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":857
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":860
* error_result = tree.xmlOutputBufferClose(self._c_out)
* if error_result > 0:
* error_result = xmlerror.XML_ERR_OK # <<<<<<<<<<<<<<
}
/*else*/ {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":859
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":862
* error_result = xmlerror.XML_ERR_OK
* else:
* tree.xmlOutputBufferClose(self._c_out) # <<<<<<<<<<<<<<
}
__pyx_L6:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":860
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":863
* else:
* tree.xmlOutputBufferClose(self._c_out)
* self._c_out = NULL # <<<<<<<<<<<<<<
*/
__pyx_v_self->_c_out = NULL;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":861
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":864
* tree.xmlOutputBufferClose(self._c_out)
* self._c_out = NULL
* if raise_on_error: # <<<<<<<<<<<<<<
*/
if (__pyx_v_raise_on_error) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":862
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":865
* self._c_out = NULL
* if raise_on_error:
* self._handle_error(error_result) # <<<<<<<<<<<<<<
*
* cdef _handle_error(self, int error_result):
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_error_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error(__pyx_v_self, __pyx_v_error_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
goto __pyx_L8;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":864
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":867
* self._handle_error(error_result)
*
* cdef _handle_error(self, int error_result): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_handle_error", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":865
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":868
*
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK: # <<<<<<<<<<<<<<
__pyx_t_1 = (__pyx_v_error_result != XML_ERR_OK);
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":866
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":869
* cdef _handle_error(self, int error_result):
* if error_result != xmlerror.XML_ERR_OK:
* if self._writer is not None: # <<<<<<<<<<<<<<
* self._writer._exc_context._raise_if_stored()
* _raiseSerialisationError(error_result)
*/
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___writer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___writer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_t_1 = (__pyx_t_2 != Py_None);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
if (__pyx_t_1) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":867
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":870
* if error_result != xmlerror.XML_ERR_OK:
* if self._writer is not None:
* self._writer._exc_context._raise_if_stored() # <<<<<<<<<<<<<<
* _raiseSerialisationError(error_result)
*
*/
- __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___writer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___writer); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___exc_context); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s___exc_context); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s___raise_if_stored); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s___raise_if_stored); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
- __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
}
__pyx_L4:;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":868
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":871
* if self._writer is not None:
* self._writer._exc_context._raise_if_stored()
* _raiseSerialisationError(error_result) # <<<<<<<<<<<<<<
*
* @cython.final
*/
- __pyx_t_3 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __pyx_f_4lxml_5etree__raiseSerialisationError(__pyx_v_error_result); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
goto __pyx_L3;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__element_config)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._FileWriterElement.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return -1;
__pyx_L4_argument_unpacking_done:;
- if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_writer), __pyx_ptype_4lxml_5etree__IncrementalFileWriter, 0, "writer", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_r = __pyx_pf_4lxml_5etree_18_FileWriterElement___cinit__(((struct __pyx_obj_4lxml_5etree__FileWriterElement *)__pyx_v_self), __pyx_v_writer, __pyx_v_element_config);
goto __pyx_L0;
__pyx_L1_error:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":876
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":879
* cdef _IncrementalFileWriter _writer
*
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config): # <<<<<<<<<<<<<<
__Pyx_RefNannyDeclarations
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":877
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":880
*
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config):
* self._writer = writer # <<<<<<<<<<<<<<
__Pyx_DECREF(((PyObject *)__pyx_v_self->_writer));
__pyx_v_self->_writer = __pyx_v_writer;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":878
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":881
* def __cinit__(self, _IncrementalFileWriter writer not None, element_config):
* self._writer = writer
* self._element = element_config # <<<<<<<<<<<<<<
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":880
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":883
* self._element = element_config
*
* def __enter__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__enter__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":881
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":884
*
* def __enter__(self):
* self._writer._write_start_element(self._element) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_self->_element;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 881; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_start_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_val)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 1); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__exc_tb)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, 2); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__exit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
goto __pyx_L5_argtuple_error;
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._FileWriterElement.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":883
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":886
* self._writer._write_start_element(self._element)
*
* def __exit__(self, exc_type, exc_val, exc_tb): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__exit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":884
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":887
*
* def __exit__(self, exc_type, exc_val, exc_tb):
* self._writer._write_end_element(self._element) # <<<<<<<<<<<<<<
*/
__pyx_t_1 = __pyx_v_self->_element;
__Pyx_INCREF(__pyx_t_1);
- __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_end_element(__pyx_v_self->_writer, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3239
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3243
* u"Base class for XML validators."
* cdef _ErrorLog _error_log
* def __cinit__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__cinit__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3240
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3244
* cdef _ErrorLog _error_log
* def __cinit__(self):
* self._error_log = _ErrorLog() # <<<<<<<<<<<<<<
*
* def validate(self, etree):
*/
- __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_4lxml_5etree__ErrorLog)), ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__Pyx_GOTREF(__pyx_v_self->_error_log);
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3242
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3246
* self._error_log = _ErrorLog()
*
* def validate(self, etree): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("validate", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3249
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3253
* Returns true if document is valid, false if not.
* """
* return self(etree) # <<<<<<<<<<<<<<
* def assertValid(self, etree):
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_etree);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
__Pyx_GIVEREF(__pyx_v_etree);
- __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
__pyx_r = __pyx_t_2;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3251
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3255
* return self(etree)
*
* def assertValid(self, etree): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("assertValid", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3256
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3260
* Raises `DocumentInvalid` if the document does not comply with the schema.
* """
* if not self(etree): # <<<<<<<<<<<<<<
* raise DocumentInvalid(self._error_log._buildExceptionMessage(
* u"Document does not comply with schema"),
*/
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_etree);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
__Pyx_GIVEREF(__pyx_v_etree);
- __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3256; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = (!__pyx_t_3);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3257
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3261
* """
* if not self(etree):
* raise DocumentInvalid(self._error_log._buildExceptionMessage( # <<<<<<<<<<<<<<
* u"Document does not comply with schema"),
* self._error_log)
*/
- __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__DocumentInvalid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__DocumentInvalid); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_369)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_369)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3259
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3263
* raise DocumentInvalid(self._error_log._buildExceptionMessage(
* u"Document does not comply with schema"),
* self._error_log) # <<<<<<<<<<<<<<
*
* def assert_(self, etree):
*/
- __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
PyTuple_SET_ITEM(__pyx_t_5, 1, ((PyObject *)__pyx_v_self->_error_log));
__Pyx_GIVEREF(((PyObject *)__pyx_v_self->_error_log));
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_5), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_5)); __pyx_t_5 = 0;
__Pyx_Raise(__pyx_t_1, 0, 0, 0);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3261
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3265
* self._error_log)
*
* def assert_(self, etree): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("assert_", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3266
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3270
* Raises `AssertionError` if the document does not comply with the schema.
* """
* if not self(etree): # <<<<<<<<<<<<<<
* raise AssertionError, self._error_log._buildExceptionMessage(
* u"Document does not comply with schema")
*/
- __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_INCREF(__pyx_v_etree);
PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_etree);
__Pyx_GIVEREF(__pyx_v_etree);
- __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(((PyObject *)__pyx_v_self), ((PyObject *)__pyx_t_1), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(((PyObject *)__pyx_t_1)); __pyx_t_1 = 0;
- __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_4 = (!__pyx_t_3);
if (__pyx_t_4) {
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3267
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3271
* """
* if not self(etree):
* raise AssertionError, self._error_log._buildExceptionMessage( # <<<<<<<<<<<<<<
* u"Document does not comply with schema")
*
*/
- __pyx_t_2 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_369)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = __pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), ((PyObject *)__pyx_kp_u_369)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_2, 0, 0);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
goto __pyx_L3;
}
__pyx_L3:;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3270
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3274
* u"Document does not comply with schema")
*
* cpdef _append_log_message(self, int domain, int type, int level, int line, # <<<<<<<<<<<<<<
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___append_log_message); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___append_log_message); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message)) {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyInt_FromLong(__pyx_v_domain); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyInt_FromLong(__pyx_v_domain); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
- __pyx_t_3 = PyInt_FromLong(__pyx_v_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_3 = PyInt_FromLong(__pyx_v_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
- __pyx_t_4 = PyInt_FromLong(__pyx_v_level); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_4 = PyInt_FromLong(__pyx_v_level); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
- __pyx_t_5 = PyInt_FromLong(__pyx_v_line); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyInt_FromLong(__pyx_v_line); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
- __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyTuple_New(6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
__Pyx_GIVEREF(__pyx_t_2);
__pyx_t_3 = 0;
__pyx_t_4 = 0;
__pyx_t_5 = 0;
- __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_5 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_6), NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_5);
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
__pyx_r = __pyx_t_5;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3273
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3277
* message, filename):
* self._error_log._receiveGeneric(domain, type, level, line, message,
* filename) # <<<<<<<<<<<<<<
case 1:
if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__type)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 2:
if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__level)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 3:
if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__line)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 4:
if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__message)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
case 5:
if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s__filename)) != 0)) kw_args--;
else {
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
}
if (unlikely(kw_args > 0)) {
- if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_append_log_message") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_append_log_message") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
}
} else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
goto __pyx_L5_argtuple_error;
values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
}
- __pyx_v_domain = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_domain == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_type = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_level = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
- __pyx_v_line = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_line == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_domain = __Pyx_PyInt_AsInt(values[0]); if (unlikely((__pyx_v_domain == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_type = __Pyx_PyInt_AsInt(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_level = __Pyx_PyInt_AsInt(values[2]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __pyx_v_line = __Pyx_PyInt_AsInt(values[3]); if (unlikely((__pyx_v_line == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_v_message = values[4];
__pyx_v_filename = values[5];
}
goto __pyx_L4_argument_unpacking_done;
__pyx_L5_argtuple_error:;
- __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
+ __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
__pyx_L3_error:;
__Pyx_AddTraceback("lxml.etree._Validator._append_log_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
__Pyx_RefNannyFinishContext();
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3270
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3274
* u"Document does not comply with schema")
*
* cpdef _append_log_message(self, int domain, int type, int level, int line, # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_append_log_message", 0);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Validator *)__pyx_v_self->__pyx_vtab)->_append_log_message(__pyx_v_self, __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Validator *)__pyx_v_self->__pyx_vtab)->_append_log_message(__pyx_v_self, __pyx_v_domain, __pyx_v_type, __pyx_v_level, __pyx_v_line, __pyx_v_message, __pyx_v_filename, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3275
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3279
* filename)
*
* cpdef _clear_error_log(self): # <<<<<<<<<<<<<<
if (unlikely(__pyx_skip_dispatch)) ;
/* Check if overridden in Python */
else if (unlikely(Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0)) {
- __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___clear_error_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(((PyObject *)__pyx_v_self), __pyx_n_s___clear_error_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)__pyx_pw_4lxml_5etree_10_Validator_11_clear_error_log)) {
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_empty_tuple), NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3276
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3280
*
* cpdef _clear_error_log(self):
* self._error_log.clear() # <<<<<<<<<<<<<<
*
* property error_log:
*/
- __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->_error_log, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->clear(__pyx_v_self->_error_log, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3275
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3279
* filename)
*
* cpdef _clear_error_log(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("_clear_error_log", 0);
__Pyx_XDECREF(__pyx_r);
- __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Validator *)__pyx_v_self->__pyx_vtab)->_clear_error_log(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = ((struct __pyx_vtabstruct_4lxml_5etree__Validator *)__pyx_v_self->__pyx_vtab)->_clear_error_log(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__pyx_r = __pyx_t_1;
__pyx_t_1 = 0;
return __pyx_r;
}
-/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3280
+/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3284
* property error_log:
* u"The log of validation errors and warnings."
* def __get__(self): # <<<<<<<<<<<<<<
int __pyx_clineno = 0;
__Pyx_RefNannySetupContext("__get__", 0);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3281
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3285
* u"The log of validation errors and warnings."
* def __get__(self):
* assert self._error_log is not None, "XPath evaluator not initialised" # <<<<<<<<<<<<<<
__pyx_t_1 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
if (unlikely(!__pyx_t_1)) {
PyErr_SetObject(PyExc_AssertionError, ((PyObject *)__pyx_kp_s_295));
- {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
}
#endif
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3282
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3286
* def __get__(self):
* assert self._error_log is not None, "XPath evaluator not initialised"
* return self._error_log.copy() # <<<<<<<<<<<<<<
* include "dtd.pxi" # DTD
*/
__Pyx_XDECREF(__pyx_r);
- __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__ErrorLog *)__pyx_v_self->_error_log->__pyx_base.__pyx_base.__pyx_vtab)->__pyx_base.__pyx_base.copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_v_self->_error_log), 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__pyx_r = __pyx_t_2;
__pyx_t_2 = 0;
0, /*tp_setattro*/
&__pyx_tp_as_buffer_xmlfile, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
- __Pyx_DOCSTR("xmlfile(self, output_file, encoding=None, compression=None)\n\n A simple mechanism for incremental XML serialisation.\n\n Usage example:\n\n with xmlfile(\"somefile.xml\", encoding='utf-8') as xf:\n xf.write_declaration(standalone=True)\n xf.write_doctype('<!DOCTYPE root SYSTEM \"some.dtd\">')\n\n # generate an element (the root element)\n with xf.Element('root'):\n # write a complete Element into the open root element\n xf.write(etree.Element('test'))\n\n # generate and write more Elements, e.g. through iterparse\n for element in generate_some_elements():\n # serialise generated elements into the XML file\n xf.write(element)\n "), /*tp_doc*/
+ __Pyx_DOCSTR("xmlfile(self, output_file, encoding=None, compression=None)\n\n A simple mechanism for incremental XML serialisation.\n\n Usage example::\n\n with xmlfile(\"somefile.xml\", encoding='utf-8') as xf:\n xf.write_declaration(standalone=True)\n xf.write_doctype('<!DOCTYPE root SYSTEM \"some.dtd\">')\n\n # generate an element (the root element)\n with xf.Element('root'):\n # write a complete Element into the open root element\n xf.write(etree.Element('test'))\n\n # generate and write more Elements, e.g. through iterparse\n for element in generate_some_elements():\n # serialise generated elements into the XML file\n xf.write(element)\n "), /*tp_doc*/
__pyx_tp_traverse_4lxml_5etree_xmlfile, /*tp_traverse*/
__pyx_tp_clear_4lxml_5etree_xmlfile, /*tp_clear*/
0, /*tp_richcompare*/
{&__pyx_n_u__href, __pyx_k__href, sizeof(__pyx_k__href), 0, 1, 0, 1},
{&__pyx_n_b__html, __pyx_k__html, sizeof(__pyx_k__html), 0, 0, 0, 1},
{&__pyx_n_s__html, __pyx_k__html, sizeof(__pyx_k__html), 0, 0, 1, 1},
- {&__pyx_n_u__html, __pyx_k__html, sizeof(__pyx_k__html), 0, 1, 0, 1},
{&__pyx_n_s__huge_tree, __pyx_k__huge_tree, sizeof(__pyx_k__huge_tree), 0, 0, 1, 1},
{&__pyx_n_u__i, __pyx_k__i, sizeof(__pyx_k__i), 0, 1, 0, 1},
{&__pyx_n_s__id, __pyx_k__id, sizeof(__pyx_k__id), 0, 0, 1, 1},
{&__pyx_n_b__test, __pyx_k__test, sizeof(__pyx_k__test), 0, 0, 0, 1},
{&__pyx_n_s__test, __pyx_k__test, sizeof(__pyx_k__test), 0, 0, 1, 1},
{&__pyx_n_s__text, __pyx_k__text, sizeof(__pyx_k__text), 0, 0, 1, 1},
- {&__pyx_n_u__text, __pyx_k__text, sizeof(__pyx_k__text), 0, 1, 0, 1},
{&__pyx_n_s__tostring, __pyx_k__tostring, sizeof(__pyx_k__tostring), 0, 0, 1, 1},
{&__pyx_n_s__tostringlist, __pyx_k__tostringlist, sizeof(__pyx_k__tostringlist), 0, 0, 1, 1},
{&__pyx_n_s__tounicode, __pyx_k__tounicode, sizeof(__pyx_k__tounicode), 0, 0, 1, 1},
{&__pyx_n_s__version, __pyx_k__version, sizeof(__pyx_k__version), 0, 0, 1, 1},
{&__pyx_n_s__warn, __pyx_k__warn, sizeof(__pyx_k__warn), 0, 0, 1, 1},
{&__pyx_n_s__warnings, __pyx_k__warnings, sizeof(__pyx_k__warnings), 0, 0, 1, 1},
- {&__pyx_n_u__wb, __pyx_k__wb, sizeof(__pyx_k__wb), 0, 1, 0, 1},
+ {&__pyx_n_s__wb, __pyx_k__wb, sizeof(__pyx_k__wb), 0, 0, 1, 1},
{&__pyx_n_s__with_comments, __pyx_k__with_comments, sizeof(__pyx_k__with_comments), 0, 0, 1, 1},
{&__pyx_n_s__with_tail, __pyx_k__with_tail, sizeof(__pyx_k__with_tail), 0, 0, 1, 1},
{&__pyx_n_s__write, __pyx_k__write, sizeof(__pyx_k__write), 0, 0, 1, 1},
- {&__pyx_n_u__write, __pyx_k__write, sizeof(__pyx_k__write), 0, 1, 0, 1},
{&__pyx_n_s__write_declaration, __pyx_k__write_declaration, sizeof(__pyx_k__write_declaration), 0, 0, 1, 1},
{&__pyx_n_s__write_file, __pyx_k__write_file, sizeof(__pyx_k__write_file), 0, 0, 1, 1},
{&__pyx_n_u__write_file, __pyx_k__write_file, sizeof(__pyx_k__write_file), 0, 1, 0, 1},
__pyx_builtin_range = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_KeyError = __Pyx_GetName(__pyx_b, __pyx_n_s__KeyError); if (!__pyx_builtin_KeyError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#if PY_MAJOR_VERSION >= 3
- __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__range); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#else
- __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_xrange = __Pyx_GetName(__pyx_b, __pyx_n_s__xrange); if (!__pyx_builtin_xrange) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
#endif
- __pyx_builtin_UnicodeEncodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_UnicodeDecodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_UnicodeEncodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_UnicodeDecodeError = __Pyx_GetName(__pyx_b, __pyx_n_s__UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_IndexError = __Pyx_GetName(__pyx_b, __pyx_n_s__IndexError); if (!__pyx_builtin_IndexError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_FutureWarning = __Pyx_GetName(__pyx_b, __pyx_n_s__FutureWarning); if (!__pyx_builtin_FutureWarning) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_NotImplemented = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplemented); if (!__pyx_builtin_NotImplemented) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1727; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_LookupError = __Pyx_GetName(__pyx_b, __pyx_n_s__LookupError); if (!__pyx_builtin_LookupError) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_open = __Pyx_GetName(__pyx_b, __pyx_n_s__open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_builtin_NotImplementedError = __Pyx_GetName(__pyx_b, __pyx_n_s__NotImplementedError); if (!__pyx_builtin_NotImplementedError) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_builtin_AssertionError = __Pyx_GetName(__pyx_b, __pyx_n_s__AssertionError); if (!__pyx_builtin_AssertionError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_builtin_AssertionError = __Pyx_GetName(__pyx_b, __pyx_n_s__AssertionError); if (!__pyx_builtin_AssertionError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
return 0;
__pyx_L1_error:;
return -1;
__Pyx_GOTREF(__pyx_k_tuple_10);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_10));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1339
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1335
* raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
* if invalid:
* raise ValueError( # <<<<<<<<<<<<<<
* "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
* return utf8_string
*/
- __pyx_k_tuple_27 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_26)); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_27 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_26)); if (unlikely(!__pyx_k_tuple_27)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_27);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_27));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1386
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1382
* return filename8
* else:
* raise TypeError("Argument must be string or unicode.") # <<<<<<<<<<<<<<
*
* cdef object _decodeFilename(const_xmlChar* c_path):
*/
- __pyx_k_tuple_29 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_28)); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_29 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_28)); if (unlikely(!__pyx_k_tuple_29)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_29);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_29));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1431
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":1427
* return (<unicode>filename).encode('utf8')
* else:
* raise TypeError("Argument must be string or unicode.") # <<<<<<<<<<<<<<
*
* cdef tuple _getNsTag(tag):
*/
- __pyx_k_tuple_30 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_28)); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_30 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_28)); if (unlikely(!__pyx_k_tuple_30)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 1427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_30);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_30));
__Pyx_GOTREF(__pyx_k_tuple_99);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_99));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2752
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2756
* _assertValidNode(element)
* if with_tail:
* events = (u"start", u"end") # <<<<<<<<<<<<<<
* else:
* events = (u"start",)
*/
- __pyx_k_tuple_114 = PyTuple_Pack(2, ((PyObject *)__pyx_n_u__start), ((PyObject *)__pyx_n_u__end)); if (unlikely(!__pyx_k_tuple_114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2752; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_114 = PyTuple_Pack(2, ((PyObject *)__pyx_n_u__start), ((PyObject *)__pyx_n_u__end)); if (unlikely(!__pyx_k_tuple_114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2756; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_114);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_114));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2754
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2758
* events = (u"start", u"end")
* else:
* events = (u"start",) # <<<<<<<<<<<<<<
* self._start_element = element
* self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
*/
- __pyx_k_tuple_115 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__start)); if (unlikely(!__pyx_k_tuple_115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2754; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_115 = PyTuple_Pack(1, ((PyObject *)__pyx_n_u__start)); if (unlikely(!__pyx_k_tuple_115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2758; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_115);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_115));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3081
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3085
* if method == 'c14n':
* if encoding is not None:
* raise ValueError("Cannot specify encoding with C14N") # <<<<<<<<<<<<<<
* if xml_declaration:
* raise ValueError("Cannot enable XML declaration in C14N")
*/
- __pyx_k_tuple_119 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_94)); if (unlikely(!__pyx_k_tuple_119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3081; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_119 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_94)); if (unlikely(!__pyx_k_tuple_119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3085; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_119);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_119));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3083
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3087
* raise ValueError("Cannot specify encoding with C14N")
* if xml_declaration:
* raise ValueError("Cannot enable XML declaration in C14N") # <<<<<<<<<<<<<<
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
* if not with_comments:
*/
- __pyx_k_tuple_120 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_96)); if (unlikely(!__pyx_k_tuple_120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3083; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_120 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_96)); if (unlikely(!__pyx_k_tuple_120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_120);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_120));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3086
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3090
* return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
* if not with_comments:
* raise ValueError("Can only discard comments in C14N serialisation") # <<<<<<<<<<<<<<
* if encoding is _unicode or (encoding is not None and encoding.upper() == 'UNICODE'):
* if xml_declaration:
*/
- __pyx_k_tuple_121 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_98)); if (unlikely(!__pyx_k_tuple_121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_121 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_98)); if (unlikely(!__pyx_k_tuple_121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3090; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_121);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_121));
__Pyx_GOTREF(__pyx_k_tuple_220);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_220));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":559
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":562
* writer = _FilelikeWriter(f, compression=compression)
* c_buffer = writer._createOutputBuffer(NULL)
* with writer.error_log: # <<<<<<<<<<<<<<
- * bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- * with_comments, c_buffer)
+ * bytes_count = c14n.xmlC14NDocSaveTo(
+ * c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
*/
- __pyx_k_tuple_240 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_240)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_240 = PyTuple_Pack(3, Py_None, Py_None, Py_None); if (unlikely(!__pyx_k_tuple_240)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_240);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_240));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":670
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":673
* cdef int c_standalone
* if self._status >= WRITER_DECL_WRITTEN:
* raise LxmlSyntaxError("XML declaration already written") # <<<<<<<<<<<<<<
* version = _utf8orNone(version)
* c_version = _xcstr(version) if version is not None else NULL
*/
- __pyx_k_tuple_242 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_241)); if (unlikely(!__pyx_k_tuple_242)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_242 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_241)); if (unlikely(!__pyx_k_tuple_242)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_242);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_242));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":695
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":698
* return
* if self._status >= WRITER_DTD_WRITTEN:
* raise LxmlSyntaxError("DOCTYPE already written or cannot write it here") # <<<<<<<<<<<<<<
* doctype = _utf8(doctype)
* _writeDoctype(self._c_out, _xcstr(doctype))
*/
- __pyx_k_tuple_244 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_243)); if (unlikely(!__pyx_k_tuple_244)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_244 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_243)); if (unlikely(!__pyx_k_tuple_244)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 698; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_244);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_244));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":737
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":740
* cdef _write_start_element(self, element_config):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* ns, name, attributes, nsmap = element_config
* flat_namespace_map, new_namespaces = self._collect_namespaces(nsmap)
*/
- __pyx_k_tuple_247 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_246)); if (unlikely(!__pyx_k_tuple_247)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_247 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_246)); if (unlikely(!__pyx_k_tuple_247)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 740; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_247);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_247));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":775
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":778
* cdef _write_end_element(self, element_config):
* if self._status != WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager")
*/
- __pyx_k_tuple_252 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_251)); if (unlikely(!__pyx_k_tuple_252)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_252 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_251)); if (unlikely(!__pyx_k_tuple_252)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_252);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_252));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":777
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":780
* raise LxmlSyntaxError("not in an element")
* if not self._element_stack or self._element_stack[-1][:2] != element_config[:2]:
* raise LxmlSyntaxError("inconsistent exit action in context manager") # <<<<<<<<<<<<<<
*
* name, prefix = self._element_stack.pop()[1:3]
*/
- __pyx_k_tuple_254 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_253)); if (unlikely(!__pyx_k_tuple_254)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 777; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_254 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_253)); if (unlikely(!__pyx_k_tuple_254)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 780; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_254);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_254));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":831
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":834
* if self._status != WRITER_IN_ELEMENT:
* if self._status > WRITER_IN_ELEMENT or content.strip():
* raise LxmlSyntaxError("not in an element") # <<<<<<<<<<<<<<
* content = _utf8(content)
* tree.xmlOutputBufferWriteEscape(self._c_out, _xcstr(content), NULL)
*/
- __pyx_k_tuple_256 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_251)); if (unlikely(!__pyx_k_tuple_256)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_256 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_251)); if (unlikely(!__pyx_k_tuple_256)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_256);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_256));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":836
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":839
* elif iselement(content):
* if self._status > WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("cannot append trailing element to complete XML document") # <<<<<<<<<<<<<<
* _writeNodeToBuffer(self._c_out, (<_Element>content)._c_node,
* self._c_encoding, NULL, OUTPUT_METHOD_XML,
*/
- __pyx_k_tuple_257 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_246)); if (unlikely(!__pyx_k_tuple_257)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_257 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_246)); if (unlikely(!__pyx_k_tuple_257)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_257);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_257));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":850
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":853
* if raise_on_error:
* if self._status < WRITER_IN_ELEMENT:
* raise LxmlSyntaxError("no content written") # <<<<<<<<<<<<<<
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close")
*/
- __pyx_k_tuple_260 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_259)); if (unlikely(!__pyx_k_tuple_260)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_260 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_259)); if (unlikely(!__pyx_k_tuple_260)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 853; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_260);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_260));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":852
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/serializer.pxi":855
* raise LxmlSyntaxError("no content written")
* if self._element_stack:
* raise LxmlSyntaxError("pending open tags on close") # <<<<<<<<<<<<<<
* error_result = self._c_out.error
* if error_result == xmlerror.XML_ERR_OK:
*/
- __pyx_k_tuple_262 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_261)); if (unlikely(!__pyx_k_tuple_262)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_262 = PyTuple_Pack(1, ((PyObject *)__pyx_kp_s_261)); if (unlikely(!__pyx_k_tuple_262)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_262);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_262));
__Pyx_GOTREF(__pyx_k_tuple_517);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_517));
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2794
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2798
* # module-level API for ElementTree
*
* def Element(_tag, attrib=None, nsmap=None, **_extra): # <<<<<<<<<<<<<<
* u"""Element(_tag, attrib=None, nsmap=None, **_extra)
*
*/
- __pyx_k_tuple_519 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s___tag), ((PyObject *)__pyx_n_s__attrib), ((PyObject *)__pyx_n_s__nsmap), ((PyObject *)__pyx_n_s___extra), ((PyObject *)__pyx_n_s___extra)); if (unlikely(!__pyx_k_tuple_519)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_519 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s___tag), ((PyObject *)__pyx_n_s__attrib), ((PyObject *)__pyx_n_s__nsmap), ((PyObject *)__pyx_n_s___extra), ((PyObject *)__pyx_n_s___extra)); if (unlikely(!__pyx_k_tuple_519)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_519);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_519));
- __pyx_k_codeobj_520 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_519, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Element, 2794, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_520)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_520 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_519, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Element, 2798, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_520)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2807
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2811
* attrib, nsmap, _extra)
*
* def Comment(text=None): # <<<<<<<<<<<<<<
* u"""Comment(text=None)
*
*/
- __pyx_k_tuple_521 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc)); if (unlikely(!__pyx_k_tuple_521)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_521 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc)); if (unlikely(!__pyx_k_tuple_521)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_521);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_521));
- __pyx_k_codeobj_522 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_521, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Comment, 2807, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_522)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_522 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_521, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Comment, 2811, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_522)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2826
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2830
* return _elementFactory(doc, c_node)
*
* def ProcessingInstruction(target, text=None): # <<<<<<<<<<<<<<
* u"""ProcessingInstruction(target, text=None)
*
*/
- __pyx_k_tuple_523 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__target), ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc)); if (unlikely(!__pyx_k_tuple_523)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_523 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__target), ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc)); if (unlikely(!__pyx_k_tuple_523)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_523);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_523));
- __pyx_k_codeobj_524 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_523, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s_78, 2826, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_524)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_524 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_523, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s_78, 2830, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_524)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2862
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2866
* self._utf8_data = _utf8(data)
*
* def Entity(name): # <<<<<<<<<<<<<<
* u"""Entity(name)
*
*/
- __pyx_k_tuple_525 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc), ((PyObject *)__pyx_n_s__name_utf), ((PyObject *)__pyx_n_s__c_name)); if (unlikely(!__pyx_k_tuple_525)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_525 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s__name), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_doc), ((PyObject *)__pyx_n_s__name_utf), ((PyObject *)__pyx_n_s__c_name)); if (unlikely(!__pyx_k_tuple_525)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_525);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_525));
- __pyx_k_codeobj_526 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_525, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Entity, 2862, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_526)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_526 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_525, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__Entity, 2866, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_526)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2887
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2891
* return _elementFactory(doc, c_node)
*
* def SubElement(_Element _parent not None, _tag, # <<<<<<<<<<<<<<
* attrib=None, nsmap=None, **_extra):
* u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
*/
- __pyx_k_tuple_527 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s___parent), ((PyObject *)__pyx_n_s___tag), ((PyObject *)__pyx_n_s__attrib), ((PyObject *)__pyx_n_s__nsmap), ((PyObject *)__pyx_n_s___extra), ((PyObject *)__pyx_n_s___extra)); if (unlikely(!__pyx_k_tuple_527)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_527 = PyTuple_Pack(6, ((PyObject *)__pyx_n_s___parent), ((PyObject *)__pyx_n_s___tag), ((PyObject *)__pyx_n_s__attrib), ((PyObject *)__pyx_n_s__nsmap), ((PyObject *)__pyx_n_s___extra), ((PyObject *)__pyx_n_s___extra)); if (unlikely(!__pyx_k_tuple_527)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_527);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_527));
- __pyx_k_codeobj_528 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_527, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__SubElement, 2887, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_528)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_528 = (PyObject*)__Pyx_PyCode_New(4, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_527, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__SubElement, 2891, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_528)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2896
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2900
* return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)
*
* def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None): # <<<<<<<<<<<<<<
* u"""ElementTree(element=None, file=None, parser=None)
*
*/
- __pyx_k_tuple_529 = PyTuple_Pack(10, ((PyObject *)__pyx_n_s__element), ((PyObject *)__pyx_n_s__file), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__c_next), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_node_copy), ((PyObject *)__pyx_n_s__c_doc), ((PyObject *)__pyx_n_s__etree), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_529)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_529 = PyTuple_Pack(10, ((PyObject *)__pyx_n_s__element), ((PyObject *)__pyx_n_s__file), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__c_next), ((PyObject *)__pyx_n_s__c_node), ((PyObject *)__pyx_n_s__c_node_copy), ((PyObject *)__pyx_n_s__c_doc), ((PyObject *)__pyx_n_s__etree), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_529)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_529);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_529));
- __pyx_k_codeobj_530 = (PyObject*)__Pyx_PyCode_New(3, 2, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_529, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__ElementTree, 2896, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_530)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_530 = (PyObject*)__Pyx_PyCode_New(3, 2, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_529, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__ElementTree, 2900, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_530)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2921
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2925
* return _elementTreeFactory(doc, element)
*
* def HTML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""HTML(text, parser=None, base_url=None)
*
*/
- __pyx_k_tuple_531 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_531)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_531 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_531)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_531);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_531));
- __pyx_k_codeobj_532 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_531, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__HTML, 2921, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_532)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_532 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_531, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__HTML, 2925, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_532)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2946
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2950
* return result_container.result
*
* def XML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""XML(text, parser=None, base_url=None)
*
*/
- __pyx_k_tuple_533 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_533)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_533 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_533)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_533);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_533));
- __pyx_k_codeobj_534 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_533, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__XML, 2946, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_534)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_534 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_533, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__XML, 2950, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_534)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2974
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2978
* return result_container.result
*
* def fromstring(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""fromstring(text, parser=None, base_url=None)
*
*/
- __pyx_k_tuple_535 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_535)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_535 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__text), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_535)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_535);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_535));
- __pyx_k_codeobj_536 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__fromstring, 2974, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_536)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_536 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_535, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__fromstring, 2978, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_536)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2994
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2998
* return result_container.result
*
* def fromstringlist(strings, _BaseParser parser=None): # <<<<<<<<<<<<<<
* u"""fromstringlist(strings, parser=None)
*
*/
- __pyx_k_tuple_537 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__strings), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__feed), ((PyObject *)__pyx_n_s__data)); if (unlikely(!__pyx_k_tuple_537)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_537 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__strings), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__feed), ((PyObject *)__pyx_n_s__data)); if (unlikely(!__pyx_k_tuple_537)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_537);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_537));
- __pyx_k_codeobj_538 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__fromstringlist, 2994, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_538)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_538 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_537, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__fromstringlist, 2998, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_538)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3011
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3015
* return parser.close()
*
* def iselement(element): # <<<<<<<<<<<<<<
* u"""iselement(element)
*
*/
- __pyx_k_tuple_539 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__element)); if (unlikely(!__pyx_k_tuple_539)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_539 = PyTuple_Pack(1, ((PyObject *)__pyx_n_s__element)); if (unlikely(!__pyx_k_tuple_539)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_539);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_539));
- __pyx_k_codeobj_540 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__iselement, 3011, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_540)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_540 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_539, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__iselement, 3015, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_540)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3018
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3022
* return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL
*
* def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True): # <<<<<<<<<<<<<<
* u"""dump(elem, pretty_print=True, with_tail=True)
*
*/
- __pyx_k_tuple_541 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__elem), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__xml)); if (unlikely(!__pyx_k_tuple_541)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_541 = PyTuple_Pack(4, ((PyObject *)__pyx_n_s__elem), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__xml)); if (unlikely(!__pyx_k_tuple_541)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_541);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_541));
- __pyx_k_codeobj_542 = (PyObject*)__Pyx_PyCode_New(3, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_541, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__dump, 3018, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_542)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_542 = (PyObject*)__Pyx_PyCode_New(3, 2, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_541, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__dump, 3022, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_542)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3030
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3034
* sys.stdout.write(xml)
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml", # <<<<<<<<<<<<<<
* xml_declaration=None, bint pretty_print=False, bint with_tail=True,
* standalone=None, doctype=None,
*/
- __pyx_k_tuple_543 = PyTuple_Pack(13, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__encoding), ((PyObject *)__pyx_n_s__method), ((PyObject *)__pyx_n_s__xml_declaration), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__standalone), ((PyObject *)__pyx_n_s__doctype), ((PyObject *)__pyx_n_s__exclusive), ((PyObject *)__pyx_n_s__with_comments), ((PyObject *)__pyx_n_s_89), ((PyObject *)__pyx_n_s__write_declaration), ((PyObject *)__pyx_n_s__is_standalone)); if (unlikely(!__pyx_k_tuple_543)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_543 = PyTuple_Pack(13, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__encoding), ((PyObject *)__pyx_n_s__method), ((PyObject *)__pyx_n_s__xml_declaration), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__standalone), ((PyObject *)__pyx_n_s__doctype), ((PyObject *)__pyx_n_s__exclusive), ((PyObject *)__pyx_n_s__with_comments), ((PyObject *)__pyx_n_s_89), ((PyObject *)__pyx_n_s__write_declaration), ((PyObject *)__pyx_n_s__is_standalone)); if (unlikely(!__pyx_k_tuple_543)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_543);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_543));
- __pyx_k_codeobj_544 = (PyObject*)__Pyx_PyCode_New(11, 10, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tostring, 3030, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_544)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_544 = (PyObject*)__Pyx_PyCode_New(11, 10, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_543, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tostring, 3034, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_544)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3122
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3126
* python._fqtypename(element_or_tree)
*
* def tostringlist(element_or_tree, *args, **kwargs): # <<<<<<<<<<<<<<
* u"""tostringlist(element_or_tree, *args, **kwargs)
*
*/
- __pyx_k_tuple_545 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__args), ((PyObject *)__pyx_n_s__kwargs), ((PyObject *)__pyx_n_s__args), ((PyObject *)__pyx_n_s__kwargs)); if (unlikely(!__pyx_k_tuple_545)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_545 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__args), ((PyObject *)__pyx_n_s__kwargs), ((PyObject *)__pyx_n_s__args), ((PyObject *)__pyx_n_s__kwargs)); if (unlikely(!__pyx_k_tuple_545)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_545);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_545));
- __pyx_k_codeobj_546 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tostringlist, 3122, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_546)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_546 = (PyObject*)__Pyx_PyCode_New(1, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_545, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tostringlist, 3126, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_546)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3133
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3137
* return [tostring(element_or_tree, *args, **kwargs)]
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False, # <<<<<<<<<<<<<<
* bint with_tail=True, doctype=None):
* u"""tounicode(element_or_tree, method="xml", pretty_print=False,
*/
- __pyx_k_tuple_547 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__method), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__doctype)); if (unlikely(!__pyx_k_tuple_547)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_547 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__element_or_tree), ((PyObject *)__pyx_n_s__method), ((PyObject *)__pyx_n_s__pretty_print), ((PyObject *)__pyx_n_s__with_tail), ((PyObject *)__pyx_n_s__doctype)); if (unlikely(!__pyx_k_tuple_547)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_547);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_547));
- __pyx_k_codeobj_548 = (PyObject*)__Pyx_PyCode_New(5, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tounicode, 3133, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_548)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_548 = (PyObject*)__Pyx_PyCode_New(5, 4, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_547, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__tounicode, 3137, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_548)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3167
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3171
* type(element_or_tree)
*
* def parse(source, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""parse(source, parser=None, base_url=None)
*
*/
- __pyx_k_tuple_549 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__source), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_549)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_tuple_549 = PyTuple_Pack(5, ((PyObject *)__pyx_n_s__source), ((PyObject *)__pyx_n_s__parser), ((PyObject *)__pyx_n_s__base_url), ((PyObject *)__pyx_n_s__doc), ((PyObject *)__pyx_n_s__result_container)); if (unlikely(!__pyx_k_tuple_549)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_k_tuple_549);
__Pyx_GIVEREF(((PyObject *)__pyx_k_tuple_549));
- __pyx_k_codeobj_550 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__parse, 3167, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_550)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_k_codeobj_550 = (PyObject*)__Pyx_PyCode_New(3, 1, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_k_tuple_549, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_478, __pyx_n_s__parse, 3171, __pyx_empty_bytes); if (unlikely(!__pyx_k_codeobj_550)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/classlookup.pxi":515
* LOOKUP_ELEMENT_CLASS = function
if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__Pyx_SetAttrString(__pyx_m, "ElementDepthFirstIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator = &__pyx_type_4lxml_5etree_ElementDepthFirstIterator;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "ElementTextIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "ElementTextIterator", (PyObject *)&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree_ElementTextIterator = &__pyx_type_4lxml_5etree_ElementTextIterator;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "CDATA", (PyObject *)&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "CDATA", (PyObject *)&__pyx_type_4lxml_5etree_CDATA) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree_CDATA = &__pyx_type_4lxml_5etree_CDATA;
__pyx_vtabptr_4lxml_5etree__ReadOnlyProxy = &__pyx_vtable_4lxml_5etree__ReadOnlyProxy;
__pyx_vtable_4lxml_5etree__ReadOnlyProxy._assertNode = (int (*)(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *))__pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode;
__pyx_vtabptr_4lxml_5etree__Validator = &__pyx_vtable_4lxml_5etree__Validator;
__pyx_vtable_4lxml_5etree__Validator._append_log_message = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__Validator *, int, int, int, int, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10_Validator__append_log_message;
__pyx_vtable_4lxml_5etree__Validator._clear_error_log = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__Validator *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10_Validator__clear_error_log;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Validator.tp_dict, __pyx_vtabptr_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "_Validator", (PyObject *)&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Validator.tp_dict, __pyx_vtabptr_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "_Validator", (PyObject *)&__pyx_type_4lxml_5etree__Validator) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree__Validator = &__pyx_type_4lxml_5etree__Validator;
__pyx_vtabptr_4lxml_5etree_XMLSchema = &__pyx_vtable_4lxml_5etree_XMLSchema;
__pyx_vtable_4lxml_5etree_XMLSchema.__pyx_base = *__pyx_vtabptr_4lxml_5etree__Validator;
if (PyType_Ready(&__pyx_type_4lxml_5etree__FilelikeWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__FilelikeWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__FilelikeWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree__FilelikeWriter = &__pyx_type_4lxml_5etree__FilelikeWriter;
- if (PyType_Ready(&__pyx_type_4lxml_5etree_xmlfile) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetAttrString(__pyx_m, "xmlfile", (PyObject *)&__pyx_type_4lxml_5etree_xmlfile) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree_xmlfile) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetAttrString(__pyx_m, "xmlfile", (PyObject *)&__pyx_type_4lxml_5etree_xmlfile) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree_xmlfile = &__pyx_type_4lxml_5etree_xmlfile;
__pyx_vtabptr_4lxml_5etree__IncrementalFileWriter = &__pyx_vtable_4lxml_5etree__IncrementalFileWriter;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._write_qname = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__write_qname;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._collect_namespaces = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, PyObject *))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__collect_namespaces;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._close = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, int))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__close;
__pyx_vtable_4lxml_5etree__IncrementalFileWriter._handle_error = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__IncrementalFileWriter *, int))__pyx_f_4lxml_5etree_22_IncrementalFileWriter__handle_error;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__IncrementalFileWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__IncrementalFileWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__IncrementalFileWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__IncrementalFileWriter.tp_dict, __pyx_vtabptr_4lxml_5etree__IncrementalFileWriter) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 643; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree__IncrementalFileWriter = &__pyx_type_4lxml_5etree__IncrementalFileWriter;
- if (PyType_Ready(&__pyx_type_4lxml_5etree__FileWriterElement) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyType_Ready(&__pyx_type_4lxml_5etree__FileWriterElement) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__pyx_ptype_4lxml_5etree__FileWriterElement = &__pyx_type_4lxml_5etree__FileWriterElement;
__pyx_vtabptr_4lxml_5etree__IterparseContext = &__pyx_vtable_4lxml_5etree__IterparseContext;
__pyx_vtable_4lxml_5etree__IterparseContext.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ParserContext;
if (PyObject_SetAttr(__pyx_m, __pyx_n_s____version__, ((PyObject *)__pyx_t_6)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 250; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(((PyObject *)__pyx_t_6)); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":579
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":578
+ * return attributes
*
- * cdef object __RE_XML_ENCODING
- * __RE_XML_ENCODING = re.compile( # <<<<<<<<<<<<<<
- * ur'^(\s*<\?\s*xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\']\s*', re.U)
+ * cdef object __RE_XML_ENCODING = re.compile( # <<<<<<<<<<<<<<
+ * ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U)
*
*/
- __pyx_t_6 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__compile); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":580
- * cdef object __RE_XML_ENCODING
- * __RE_XML_ENCODING = re.compile(
- * ur'^(\s*<\?\s*xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\']\s*', re.U) # <<<<<<<<<<<<<<
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":579
*
- * cdef object __REPLACE_XML_ENCODING
+ * cdef object __RE_XML_ENCODING = re.compile(
+ * ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U) # <<<<<<<<<<<<<<
+ *
+ * cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__U); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 580; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree_re, __pyx_n_s__U); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
- __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
__Pyx_INCREF(((PyObject *)__pyx_kp_u_490));
PyTuple_SET_ITEM(__pyx_t_7, 0, ((PyObject *)__pyx_kp_u_490));
PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_1);
__Pyx_GIVEREF(__pyx_t_1);
__pyx_t_1 = 0;
- __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_Call(__pyx_t_6, ((PyObject *)__pyx_t_7), NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
__pyx_v_4lxml_5etree___RE_XML_ENCODING = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":583
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":581
+ * ur'^(<\?xml[^>]+)\s+encoding\s*=\s*["\'][^"\']*["\'](\s*\?>|)', re.U)
*
- * cdef object __REPLACE_XML_ENCODING
- * __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub # <<<<<<<<<<<<<<
+ * cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub # <<<<<<<<<<<<<<
+ * cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match
*
- * cdef object __HAS_XML_ENCODING
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__sub); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
__Pyx_DECREF(__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING);
__pyx_v_4lxml_5etree___REPLACE_XML_ENCODING = __pyx_t_1;
__pyx_t_1 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":586
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/apihelpers.pxi":582
*
- * cdef object __HAS_XML_ENCODING
- * __HAS_XML_ENCODING = __RE_XML_ENCODING.match # <<<<<<<<<<<<<<
+ * cdef object __REPLACE_XML_ENCODING = __RE_XML_ENCODING.sub
+ * cdef object __HAS_XML_ENCODING = __RE_XML_ENCODING.match # <<<<<<<<<<<<<<
*
* cdef object _stripEncodingDeclaration(object xml_string):
*/
- __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__match); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 586; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_1 = PyObject_GetAttr(__pyx_v_4lxml_5etree___RE_XML_ENCODING, __pyx_n_s__match); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 582; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1);
__Pyx_XGOTREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
__Pyx_DECREF(__pyx_v_4lxml_5etree___HAS_XML_ENCODING);
__Pyx_GIVEREF(__pyx_t_6);
__pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2749
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2753
* cdef object _nextEvent
* cdef _Element _start_element
* def __cinit__(self, _Element element not None, tag=None, *, with_tail=True): # <<<<<<<<<<<<<<
* _assertValidNode(element)
* if with_tail:
*/
- __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2749; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2753; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_k_113 = __pyx_t_6;
__Pyx_GIVEREF(__pyx_t_6);
__pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2794
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2798
* # module-level API for ElementTree
*
* def Element(_tag, attrib=None, nsmap=None, **_extra): # <<<<<<<<<<<<<<
* u"""Element(_tag, attrib=None, nsmap=None, **_extra)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_7Element, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Element, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Element, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2807
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2811
* attrib, nsmap, _extra)
*
* def Comment(text=None): # <<<<<<<<<<<<<<
* u"""Comment(text=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_9Comment, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Comment, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Comment, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2811; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2826
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2830
* return _elementFactory(doc, c_node)
*
* def ProcessingInstruction(target, text=None): # <<<<<<<<<<<<<<
* u"""ProcessingInstruction(target, text=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_11ProcessingInstruction, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s_78, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2826; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s_78, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2846
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2850
* return _elementFactory(doc, c_node)
*
* PI = ProcessingInstruction # <<<<<<<<<<<<<<
*
* cdef class CDATA:
*/
- __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s_78); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_GetName(__pyx_m, __pyx_n_s_78); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PI, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__PI, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2850; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2862
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2866
* self._utf8_data = _utf8(data)
*
* def Entity(name): # <<<<<<<<<<<<<<
* u"""Entity(name)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_13Entity, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Entity, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__Entity, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2887
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2891
* return _elementFactory(doc, c_node)
*
* def SubElement(_Element _parent not None, _tag, # <<<<<<<<<<<<<<
* attrib=None, nsmap=None, **_extra):
* u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_15SubElement, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SubElement, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2887; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__SubElement, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2896
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2900
* return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)
*
* def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None): # <<<<<<<<<<<<<<
* u"""ElementTree(element=None, file=None, parser=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_17ElementTree, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ElementTree, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__ElementTree, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2900; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2921
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2925
* return _elementTreeFactory(doc, element)
*
* def HTML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""HTML(text, parser=None, base_url=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_19HTML, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HTML, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__HTML, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2946
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2950
* return result_container.result
*
* def XML(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""XML(text, parser=None, base_url=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_21XML, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XML, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__XML, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2974
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2978
* return result_container.result
*
* def fromstring(text, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""fromstring(text, parser=None, base_url=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_23fromstring, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fromstring, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fromstring, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2994
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":2998
* return result_container.result
*
* def fromstringlist(strings, _BaseParser parser=None): # <<<<<<<<<<<<<<
* u"""fromstringlist(strings, parser=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_25fromstringlist, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fromstringlist, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__fromstringlist, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 2998; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3011
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3015
* return parser.close()
*
* def iselement(element): # <<<<<<<<<<<<<<
* u"""iselement(element)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_27iselement, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__iselement, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3011; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__iselement, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3015; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3018
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3022
* return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL
*
* def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True): # <<<<<<<<<<<<<<
* u"""dump(elem, pretty_print=True, with_tail=True)
*
*/
- __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = __Pyx_PyBool_FromLong(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
__pyx_k_118 = __pyx_t_6;
__Pyx_GIVEREF(__pyx_t_6);
__pyx_t_6 = 0;
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_29dump, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__dump, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__dump, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3030
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3034
* sys.stdout.write(xml)
*
* def tostring(element_or_tree, *, encoding=None, method=u"xml", # <<<<<<<<<<<<<<
* xml_declaration=None, bint pretty_print=False, bint with_tail=True,
* standalone=None, doctype=None,
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_31tostring, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tostring, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tostring, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3122
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3126
* python._fqtypename(element_or_tree)
*
* def tostringlist(element_or_tree, *args, **kwargs): # <<<<<<<<<<<<<<
* u"""tostringlist(element_or_tree, *args, **kwargs)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_33tostringlist, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tostringlist, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tostringlist, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3133
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3137
* return [tostring(element_or_tree, *args, **kwargs)]
*
* def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False, # <<<<<<<<<<<<<<
* bint with_tail=True, doctype=None):
* u"""tounicode(element_or_tree, method="xml", pretty_print=False,
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_35tounicode, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tounicode, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__tounicode, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3167
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3171
* type(element_or_tree)
*
* def parse(source, _BaseParser parser=None, *, base_url=None): # <<<<<<<<<<<<<<
* u"""parse(source, parser=None, base_url=None)
*
*/
- __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_6 = PyCFunction_NewEx(&__pyx_mdef_4lxml_5etree_37parse, NULL, __pyx_n_s_479); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_6);
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__parse, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__parse, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
/* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/readonlytree.pxi":186
__Pyx_GIVEREF(Py_None);
__pyx_v_4lxml_5etree___findStylesheetByID = ((struct __pyx_obj_4lxml_5etree_XPath *)Py_None);
- /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3228
+ /* "/home/stefan/source/Python/lxml/lxml-release/src/lxml/lxml.etree.pyx":3232
* # Validation
*
* class DocumentInvalid(LxmlError): # <<<<<<<<<<<<<<
* u"""Validation error.
*
*/
- __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_14 = PyDict_New(); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_14));
- __pyx_t_15 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_15 = __Pyx_GetName(__pyx_m, __pyx_n_s__LxmlError); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_15);
- __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_7);
PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_15);
__Pyx_GIVEREF(__pyx_t_15);
__pyx_t_15 = 0;
- if (PyDict_SetItemString(((PyObject *)__pyx_t_14), "__doc__", ((PyObject *)__pyx_kp_s_644)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
- __pyx_t_15 = __Pyx_CreateClass(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_14), __pyx_n_s__DocumentInvalid, __pyx_n_s__DocumentInvalid, __pyx_n_s_479); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyDict_SetItemString(((PyObject *)__pyx_t_14), "__doc__", ((PyObject *)__pyx_kp_s_644)) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ __pyx_t_15 = __Pyx_CreateClass(((PyObject *)__pyx_t_7), ((PyObject *)__pyx_t_14), __pyx_n_s__DocumentInvalid, __pyx_n_s__DocumentInvalid, __pyx_n_s_479); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_15);
__Pyx_DECREF(((PyObject *)__pyx_t_7)); __pyx_t_7 = 0;
- if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DocumentInvalid, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
+ if (PyObject_SetAttr(__pyx_m, __pyx_n_s__DocumentInvalid, __pyx_t_15) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 3232; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_14)); __pyx_t_14 = 0;
for item in tag:
self._storeTags(item, seen)
- cdef int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
+ cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
"""
Look up the tag names in the doc dict to enable string pointer comparisons.
"""
c_node = self._nextNodeAnyTag(c_node)
else:
c_node = self._nextNodeMatchTag(c_node)
- self._next_node = (_elementFactory(current_node._doc, c_node)
- if c_node is not NULL else None)
+ if c_node is NULL:
+ self._next_node = None
+ else:
+ self._next_node = _elementFactory(current_node._doc, c_node)
return current_node
+ @cython.final
cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
cdef int node_types = self._matcher._node_types
if not node_types:
tree.END_FOR_EACH_ELEMENT_FROM(c_node)
return NULL
+ @cython.final
cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
if self._matcher.matches(c_node):
-/* Generated by Cython 0.18 on Fri Mar 29 21:57:33 2013 */
+/* Generated by Cython 0.18 on Fri Apr 12 07:15:01 2013 */
#define PY_SSIZE_T_CLEAN
#include "Python.h"
Py_CLEAR(__pyx_v_4lxml_9objectify_etree);
__Pyx_CleanupGlobals();
/*--- Type import cleanup code ---*/
- Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic_FallbackElementClassLookup);
Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__ElementTree);
- Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__Document);
Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic_ElementBase);
Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__ElementTagMatcher);
- Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup);
Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__Element);
+ Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup);
+ Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic_FallbackElementClassLookup);
Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__ElementIterator);
+ Py_CLEAR(__pyx_ptype_4lxml_8includes_11etreepublic__Document);
/*--- Builtin cleanup code ---*/
Py_CLEAR(__pyx_builtin_ValueError);
Py_CLEAR(__pyx_builtin_TypeError);
else:
return (None, tag)
+
class ElementTreeContentHandler(ContentHandler):
"""Build an lxml ElementTree from SAX events.
"""
return ElementTree(self._root)
etree = property(_get_etree, doc=_get_etree.__doc__)
-
+
def setDocumentLocator(self, locator):
pass
raise SaxError("Unexpected element closed: " + el_tag)
def startElement(self, name, attributes=None):
+ if attributes:
+ attributes = dict(
+ [((None, k), v) for k, v in attributes.items()]
+ )
self.startElementNS((None, name), name, attributes)
def endElement(self, name):
last_element.text = (last_element.text or '') + data
ignorableWhitespace = characters
-
+
class ElementTreeProducer(object):
"""Produces SAX events for an element and children.
if method is None:
return OUTPUT_METHOD_XML
method = method.lower()
- if method == u"xml":
+ if method == "xml":
return OUTPUT_METHOD_XML
- if method == u"html":
+ if method == "html":
return OUTPUT_METHOD_HTML
- if method == u"text":
+ if method == "text":
return OUTPUT_METHOD_TEXT
- raise ValueError, u"unknown output method %r" % method
+ raise ValueError(u"unknown output method %r" % method)
cdef _textToString(xmlNode* c_node, encoding, bint with_tail):
cdef bint needs_conversion
try:
if encoding is _unicode:
result = (<unsigned char*>tree.xmlBufContent(
- c_result_buffer))[:tree.xmlBufLength(c_result_buffer)].decode('UTF-8')
+ c_result_buffer))[:tree.xmlBufUse(c_result_buffer)].decode('UTF-8')
else:
result = <bytes>(<unsigned char*>tree.xmlBufContent(
- c_result_buffer))[:tree.xmlBufLength(c_result_buffer)]
+ c_result_buffer))[:tree.xmlBufUse(c_result_buffer)]
finally:
error_result = tree.xmlOutputBufferClose(c_buffer)
if error_result < 0:
# we are at a root node, so add PI and comment siblings
c_sibling = c_node
while c_sibling.prev and \
- (c_sibling.prev.type == tree.XML_PI_NODE or \
- c_sibling.prev.type == tree.XML_COMMENT_NODE):
+ (c_sibling.prev.type == tree.XML_PI_NODE or
+ c_sibling.prev.type == tree.XML_COMMENT_NODE):
c_sibling = c_sibling.prev
while c_sibling is not c_node and not c_buffer.error:
tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
# we are at a root node, so add PI and comment siblings
c_sibling = c_node.next
while not c_buffer.error and c_sibling and \
- (c_sibling.type == tree.XML_PI_NODE or \
- c_sibling.type == tree.XML_COMMENT_NODE):
+ (c_sibling.type == tree.XML_PI_NODE or
+ c_sibling.type == tree.XML_COMMENT_NODE):
if pretty_print:
tree.xmlOutputBufferWriteString(c_buffer, "\n")
tree.xmlNodeDumpOutput(c_buffer, c_node.doc, c_sibling, 0,
def __cinit__(self, filelike, exc_context=None, compression=None):
if compression is not None and compression > 0:
filelike = gzip.GzipFile(
- fileobj=filelike, mode=u'wb', compresslevel=compression)
+ fileobj=filelike, mode='wb', compresslevel=compression)
self._close_filelike = filelike.close
self._filelike = filelike
if exc_context is None:
self._exc_context._store_raised()
return -1
-cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int len):
- return (<_FilelikeWriter>ctxt).write(c_buffer, len)
+cdef int _writeFilelikeWriter(void* ctxt, char* c_buffer, int length):
+ return (<_FilelikeWriter>ctxt).write(c_buffer, length)
cdef int _closeFilelikeWriter(void* ctxt):
return (<_FilelikeWriter>ctxt).close()
if compression:
bytes_out = BytesIO()
gzip_file = gzip.GzipFile(
- fileobj=bytes_out, mode=u'wb', compresslevel=compression)
+ fileobj=bytes_out, mode='wb', compresslevel=compression)
try:
gzip_file.write(data)
finally:
data = bytes_out
if _isString(f):
filename8 = _encodeFilename(f)
- f = open(filename8, u'wb')
+ f = open(filename8, 'wb')
try:
f.write(data)
finally:
if c_buffer is NULL:
return python.PyErr_SetFromErrno(IOError) # raises IOError
writer = None
- elif hasattr(f, u'write'):
+ elif hasattr(f, 'write'):
writer = _FilelikeWriter(f, compression=compression)
c_buffer = writer._createOutputBuffer(enchandler)
else:
cdef char* c_filename
cdef xmlDoc* c_base_doc
cdef xmlDoc* c_doc
- cdef int bytes = -1
+ cdef int bytes_count, error = 0
c_base_doc = element._c_node.doc
c_doc = _fakeRootDoc(c_base_doc, element._c_node)
try:
- c_inclusive_ns_prefixes = _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes) if inclusive_ns_prefixes else NULL
+ c_inclusive_ns_prefixes = (
+ _convert_ns_prefixes(c_doc.dict, inclusive_ns_prefixes)
+ if inclusive_ns_prefixes else NULL)
if _isString(f):
filename8 = _encodeFilename(f)
c_filename = _cstr(filename8)
with nogil:
- bytes = c14n.xmlC14NDocSave(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- with_comments, c_filename, compression)
- elif hasattr(f, u'write'):
+ error = c14n.xmlC14NDocSave(
+ c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ with_comments, c_filename, compression)
+ elif hasattr(f, 'write'):
writer = _FilelikeWriter(f, compression=compression)
c_buffer = writer._createOutputBuffer(NULL)
with writer.error_log:
- bytes = c14n.xmlC14NDocSaveTo(c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
- with_comments, c_buffer)
- if bytes >= 0:
- bytes = tree.xmlOutputBufferClose(c_buffer)
- else:
- tree.xmlOutputBufferClose(c_buffer)
+ bytes_count = c14n.xmlC14NDocSaveTo(
+ c_doc, NULL, exclusive, c_inclusive_ns_prefixes,
+ with_comments, c_buffer)
+ error = tree.xmlOutputBufferClose(c_buffer)
+ if bytes_count < 0:
+ error = bytes_count
else:
- raise TypeError, \
- u"File or filename expected, got '%s'" % python._fqtypename(f).decode('UTF-8')
+ raise TypeError(u"File or filename expected, got '%s'" %
+ python._fqtypename(f).decode('UTF-8'))
finally:
_destroyFakeDoc(c_base_doc, c_doc)
if c_inclusive_ns_prefixes is not NULL:
if writer is not None:
writer._exc_context._raise_if_stored()
- if bytes < 0:
+ if error < 0:
message = u"C14N failed"
if writer is not None:
errors = writer.error_log
if len(errors):
message = errors[0].message
- raise C14NError, message
+ raise C14NError(message)
# incremental serialisation
A simple mechanism for incremental XML serialisation.
- Usage example:
+ Usage example::
with xmlfile("somefile.xml", encoding='utf-8') as xf:
xf.write_declaration(standalone=True)
self.assertEqual('b', root[0].tag)
self.assertEqual('c', root[1].tag)
+ def test_etree_sax_no_ns_attributes(self):
+ handler = sax.ElementTreeContentHandler()
+ handler.startDocument()
+ handler.startElement('a', {"attr_a1": "a1"})
+ handler.startElement('b', {"attr_b1": "b1"})
+ handler.endElement('b')
+ handler.endElement('a')
+ handler.endDocument()
+
+ new_tree = handler.etree
+ root = new_tree.getroot()
+ self.assertEqual('a', root.tag)
+ self.assertEqual('b', root[0].tag)
+ self.assertEqual('a1', root.attrib["attr_a1"])
+ self.assertEqual('b1', root[0].attrib["attr_b1"])
+
+ def test_etree_sax_ns_attributes(self):
+ handler = sax.ElementTreeContentHandler()
+ handler.startDocument()
+
+ self.assertRaises(ValueError,
+ handler.startElement,
+ 'a', {"blaA:attr_a1": "a1"}
+ )
+
def test_etree_sax_error(self):
handler = sax.ElementTreeContentHandler()
handler.startDocument()
handler = sax.ElementTreeContentHandler()
sax.ElementTreeProducer(saxifiable, handler).saxify()
return handler.etree
-
+
def _saxify_serialize(self, tree):
new_tree = self._saxify_unsaxify(tree)
f = BytesIO()
new_tree.write(f)
return f.getvalue().replace(_bytes('\n'), _bytes(''))
-
+
def test_suite():
suite = unittest.TestSuite()
suite.addTests([unittest.makeSuite(ETreeSaxTestCase)])
self.assertEqual(expected,
unicode(res))
+ def test_xslt_unicode_standalone(self):
+ tree = self.parse(_bytes('<a><b>\\uF8D2</b><c>\\uF8D2</c></a>'
+ ).decode("unicode_escape"))
+ style = self.parse('''\
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output encoding="UTF-16" standalone="no"/>
+ <xsl:template match="/">
+ <foo><xsl:value-of select="/a/b/text()" /></foo>
+ </xsl:template>
+</xsl:stylesheet>''')
+
+ st = etree.XSLT(style)
+ res = st(tree)
+ expected = _bytes('''\
+<?xml version="1.0" standalone="no"?>
+<foo>\\uF8D2</foo>
+''').decode("unicode_escape")
+ self.assertEqual(expected,
+ unicode(res))
+
def test_xslt_input(self):
style = self.parse('''\
<xsl:stylesheet version="1.0"